primefaceコンポーネントツリーのSelectListenerに問題があります。Primefaces Tree SelectListenerは他のフォーム入力をリセットします
更新:私がしたいのは、グループを作成し、ツリーからパスを選ぶことです。だから、私はグループ名とパスのツリーを持っています。パスを選択した後、ツリーの下で選択したパスをAJAXリクエストで表示して更新する必要があります。ここで
は、私のコードの抜粋です:
<h:form id="groupCreate">
<p:inputText id="createGroupName" value="#{groupContainer.name}" />
<p:tree id="pathTree" update="groupCreate" selectionMode="single"
selection="#{groupContainer.selectedPath}" dynamic="false"
value="#{groupContainer.rootNode}" var="node" cache="false"
nodeSelectListener="#{groupContainer.onNodeSelect}">
<p:treeNode>
<h:outputText value="#{node[1]}" title="#{node[0]}" />
</p:treeNode>
</p:tree>
<!-- Display selected Path from tree -->
<h:outputText value="#{groupContainer.chosenPathString}/>
<p:commandLink id="createButton" .../>
</h:form>
私の豆でonNodeSelect機能は次のようになります。
public void onNodeSelect(NodeSelectEvent event) {
//get the selected data and set it
this.chosenPathString = //selected Text;
}
これは、一般的に動作します - AJAX要求選ばれたパスが示された後、意味します。しかし、入力フィールドのテキストをcreateGroupName
入力フィールドに入力し、その後にノードを選択した場合は、AJAXリクエスト後にcreateGroupName
が再びヌルに設定されます。
ツリーの選択されたパス名を更新するための私のAJAXリクエストは、すべての現在の型付き値をリセットします。いくつかのデバッグの後、私はAJAXリクエストが私の型付きの値を無視していることを知っています。なぜなら、それらはまだコミットされていないからです。しかし、これを動作させるためにコードを変更するにはどうすればよいですか?
ご迷惑をおかけして申し訳ございません。
。今それは動作します。私の実際のフォームではもっと多くの要素を使用していますので、すべての要素IDを記述する前に、入力のために余裕を持たせるためにフォームIDを提供することを考えました。 非常にありがとう! – thunderhook
うまくいくと聞いてよかった! –