6

フォームを送信すると、別のフォームを呼び出してレンダリングできるようにする必要があります。私はprimefacesを使用しており、以下のように機能させたいと思っています。しかし、それはエラーを投げています。

xhtml

<h:form id="from1">
<h:inputText=......
<h:outputText=....
<p:commandButton id="submit" actionlistener="#{bean.method}" value="submit" process="form2"/>

<h:form id="form2">
<h:outoutText value="it is working" render="#{bean.boolean}" />
</h:form>

エラー

[Faces Servlet]] (http--127.0.0.1-8080-2) Servlet.service() for servlet Faces Servlet threw exception: javax.faces.FacesException: Cannot find component with identifier "form2" referenced from "form1_submit".

更新しました

<h:form id="from1">
    <h:inputText=......
    <h:outputText=....
    <p:commandButton id="submit" actionlistener="#{bean.method}" value="submit" update=":form1"/>
</h:form>
4

2 に答える 2

15

次の 2 つの間違いがあります。

  • 相対コンポーネントのクライアント ID は、最も近い親UINamingContainerコンポーネント (この場合は<h:form id="form1">) に関連しています。クライアント ID "form2" は、"form1" のコンテキスト内のどこにも存在しません。代わりに絶対クライアント ID を使用する必要があり、デフォルトでは:. これにより、ビューのルートからコンポーネントが検索されます。

    process=":form2"
    
  • 1 つのフォームの送信によって別のフォームを処理することはできません。処理が必要なすべてのフィールドがまったく送信されていません (これは JSF の制限ではなく、HTML の制限であることに注意してください)。送信する必要があるのとまったく同じフォームで、処理する必要があるフィールドを囲むだけです。

于 2012-08-01T19:53:13.900 に答える
6

p:remoteCommand と onclick を使用した JS を使用した別のソリューションがあります HERE

于 2014-07-14T07:54:02.377 に答える