2017-07-27 7 views
0

Ich muss die schreibgeschützte inputTextarea-Komponente im primefaces (PF) -Assistenten überprüfen, der im PF-Dialogfeld ausgeführt wird. Nachdem ich viele Threads von hier gelesen habe, habe ich mich entschieden, die inputHidden-Komponente zu verwenden, um das zu handhaben. Aber es tut Validierungsrecht, aber nachdem ich einen Wert in den inputText eingegeben habe und dann auf commandButton geklickt habe, ist mir aufgefallen, dass die Methode applyName von foo bean niemals aufgerufen wurde. Ich würde gerne glauben, dass es mit dem JSF-Lebenszyklus zu tun hat.Wie validiere ich inputTextarea mit nur lesen?

Mein Ziel ist foo.applyName Methode tritt ein, so dass foo.name mit einem richtigen Wert zurückgegeben und ausgewertet, so dass ich auf die Schaltfläche Weiter im Assistenten klicken kann.

Ohne einen Überprüfungsmechanismus legt foo.applyName tatsächlich einen Wert (String type) in eine name -Eigenschaft und ich kann mit dem nächsten Schritt fortfahren.

<p:panelGrid id="table"> 
    <p:inputTextarea readonly="true" value="#{foo.name}" /> 
    <h:inputHidden id="name" required="#{empty foo.name}" requiredMessage="missing name" /> 
    <p:message for="name" /> 
</p:panelGrid> 

<h:inputText value="#{foo.someVar}" /> 
<p:commandButton value="Apply Missing Name" update="table" action="#{foo.applyName}" /> 

Antwort

1

Das Problem ergibt sich aus der Tatsache, dass, wenn Sie die Befehlsschaltfläche klicken, können Sie die inputTextArea sowie die input einreichen. JSF erkennt, dass das leere Feld, das Sie eingereicht haben, erforderlich ist und die Anforderung nicht fortgesetzt werden kann.

Es gibt ein paar Möglichkeiten, um dieses Problem beheben

  1. Geben Sie den input eine ID und verwenden Sie das ‚Prozess‘ Attribut auf dem Befehl die Felder festlegen, die Sie zum Beispiel einreichen mögen process = "@ this someVar"
  2. Fügen Sie die Felder inputTextArea und inputText in separate Formulare ein, damit der Befehl applyName beide nicht verarbeiten kann.
+0

Ah ... Das ergibt Sinn für mich. Obwohl ich es anders umgestaltet habe, um es funktionieren zu lassen, werde ich es mit deiner Empfehlung versuchen. Ich glaube, es würde funktionieren. Lass es mich bestätigen, dann werde ich die Antwort akzeptieren. Danke für deine Zeit und deinen Rat! – DaeYoung