明示的に追加する必要があることはわかっていますprocess="@this"
を取得するにはp:commandbutton
アクションが呼び出され、プロセス属性のデフォルトが@form
プライムフェイス。
プロセスはデフォルトで@form
ボタンがフォーム内の他の要素とともに処理されるべきではなく、そのアクションが呼び出されるべきです。
この背後にある正確な理由を誰かが説明できますか?
プロセス_@form
_は、現在の形式の_commandLink/Button
_を意味します
プロセス_@this
_は、_commandLink/Button
_の現在のコンポーネントを意味します。以下のコードを確認してください。
process.xhtml
_<h:form id="form1">
<h:inputText value="#{ProcessBean.id}" id="id"/><br/>
<h:panelGroup id="panel_1">
<h:inputText value="#{ProcessBean.name}" id="name"/><br/>
</h:panelGroup>
<h:panelGroup id="panel_2">
<h:inputText value="#{ProcessBean.address}"/>
<br/>
<p:commandButton process="@form" value="Btm1" id="button1" action="#{ProcessBean.show}"/><!-- Default -->
<p:commandButton process="@this" value="Btm2" id="button2" action="#{ProcessBean.show}"/>
<p:commandButton process="@this form1:panel_1" value="Btm3" id="button3" action="#{ProcessBean.show}"/>
</h:panelGroup>
</h:form>
_
ProcessBean.Java
_@ManagedBean(name = "ProcessBean")
public class ProcessBean {
private String id;
private String name;
private String address;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public void show() {
System.out.println(id);
System.out.println(name);
System.out.println(address);
}
}
_
ユーザー入力inputboxをしましょう
_001 -> id
Jone -> name
London -> address
_
_button1
_をクリックすると、フォーム全体のJSF component(Eg : id, name, address)
全体が処理されます。出力は次のようになります:
_001
Jone
London
_
_button2
_をクリックします。プロセスはそれ自体になります(例:button2)。 _id, name, address
_のプロセスはありません。出力は次のようになります。
_null
null
null
_
_button3
_をクリックすると、_panel_1
_と_button3
_のすべてのJSF component(Eg : name)
全体が処理されます。出力は次のようになります:
_null
Jone
null
_
アクションメソッドを呼び出しませんか?呼び出す前に検証または変換が失敗した可能性があります。