0

ユーザーにinputTextボックスに値を入力するように求めるページがあります。入力した値に基づいて、データベースからの情報を使用して日付テーブルを作成します。データテーブルの列の 1 つは selectOneRadio であるため、各行には独自のラジオ ボタンがあります。次に、ユーザーはラジオ ボタンの 1 つを選択し、コマンド ボタン (データ テーブルのフッター) をクリックして、選択されたラジオ ボタンに基づいてどの行が選択されているかを取得できる必要があります。私が抱えている問題は、ボタンをクリックしてもバッキング Bean メソッドが呼び出されないことです。この問題は、ページに移動した後にテーブルを作成したときにのみ発生します。ページの作成時にデータテーブルが存在するように値をハードコーディングすると、この問題は発生しません。私'

これはjsfです

<h:panelGrid columns="3">
   <h:outputLabel for="searchByContrId" value="Company Code: " />
   <h:inputText id="searchByContrId" value="#{applContAdminB.searchContrId}">
   </h:inputText>
   <h:commandButton type="submit" value="Search" id="submitSearch" action="#{applContAdminB.getEmployeesByContrId}" />
</h:panelGrid>
<br />
<h:outputText rendered="#{applContAdminB.contrIdEntered}" value="Current Administrator: " />
<h:outputText value="#{applContAdminB.adminName}" />
<h:dataTable id="empTable" var="loc" rendered="#{applContAdminB.contrIdEntered}" value="#{applContAdminB.employeesListModel}" binding="#{applContAdminB.htmlDataTable}">
    <h:column>
       <h:selectOneRadio onclick="updateRadioButtons(this);" valueChangeListener="#{applContAdminB.setSelectedRow}">
          <f:selectItem itemValue="null" itemLabel="" />
       </h:selectOneRadio>
    </h:column>
    <h:column>
       <f:facet name="header">Employee Name</f:facet>
       <h:outputText value="#{loc.empName}" />
    </h:column>
    <h:column>
       <f:facet name="header">Employee Email</f:facet>
       <h:outputText value="#{loc.empEmail}" />
    </h:column>
    <h:column>
       <f:facet name="header">Status</f:facet>
       <h:outputText value="#{loc.userStatus}" />
    </h:column>
    <f:facet name="footer">
       <h:panelGrid columns="2">
          <h:commandButton type="submit" id="transferRights-submit" value="Transfer Rights" action="#{applContAdminB.adjustAdminUser}" />
       </h:panelGrid>
    </facet>
 </h:dataTable>
4

1 に答える 1

0

あなたはあなた自身の質問に答えました。これは、レンダリングされた ajax を使用する際の弱点です。レンダリングされた属性をajax経由でバインドしたナビゲーションウィジェットで同様の問題がありました。最初にレンダリングされたパネルを隠しながら、目に見えないパネルをレンダリングする魔法はありません。JavaScript を使用して div を非表示にするだけで、ajax が返されたときに、それに応じて div の「表示」属性をいじることができます。それが私がそれを解決した方法です。残念ですが、望ましい代替ソリューションを見つけることができませんでした。- 彼

于 2012-08-08T19:45:40.830 に答える