私は3つのリッチ:id select1、select2、select3を持つ選択コントロールを持っています。select1、コントロール "select2"私はコントロールselect2をクリックし、select3はレンダリングされます。私はnetbeans 7.0.1でアプリケーションを作成し、framework jsf 2.0とrichFaces 4.2.0を使用しました。2つのリッチ:Ajaxの競合の問題(3つのリッチ:選択コントロール)
私の解決策は、select1とselect2 selectItemイベントでselect2とselect3のレンダリングを割り当てるために、id ajax1とajax2を持つ2つのa4j:ajaxを作成することです。 id1を持つキューにajax1とajax2を配置しました。ここで
は、ページのコードです:
<h:form>
<a4j:queue name="queue1" onerror="window.alert('alert in queue');" onrequestdequeue="window.alert('queue1 dequeue');" onrequestqueue="window.alert('queue1 enqueue');" requestDelay="1000" ignoreDupResponses="true"/>
<h3 style="text-align: center">Test case 1: 3 selection controls problem</h3>
<br/><br/>
<h:outputLink value="../index.xhtml">View Index </h:outputLink>
<br/><br/>
Problem: <h:outputText escape="false" value="#{carBean.testDescription}"/>
<br/><br/>
<table>
<tr>
<td>Car Firm (selection1)</td>
<td>Car type (selection2)</td>
<td>Production (selection3)</td>
</tr>
<tr>
<td>
<rich:select id="select1" value="#{carBean.companyName}" maxListHeight="100" enableManualInput="true" defaultLabel="Type here">
<a4j:ajax id="ajax1" queueId="queue1" execute="@form" render="select2, errorText" event="selectitem" listener="#{carBean.changeCompanyEvent()}">
</a4j:ajax>
<f:selectItems value="#{carBean.lstCompany}"></f:selectItems>
</rich:select>
</td>
<td>
<rich:select id="select2" value="#{carBean.typeName}" maxListHeight="100" enableManualInput="true" defaultLabel="Type here" >
<a4j:ajax id="ajax2" queueId="queue1" immediate="true" execute="@form" render="select3, errorText" event="selectitem" listener="#{carBean.changeCarTypeEvent()}">
</a4j:ajax>
<f:selectItems value="#{carBean.lstCarType}"></f:selectItems>
</rich:select>
</td>
<td>
<rich:select id="select3" value="#{carBean.productionName}"
maxListHeight="100" enableManualInput="true" defaultLabel="Type here" >
<f:selectItems value="#{carBean.lstCarProduction}"></f:selectItems>
</rich:select>
</td>
</tr>
</table>
<br/><br/>
<h:outputText id="errorText" escape="false" value="#{carBean.alertError}"/>
</h:form>
問題が発生しました:SELECT2を設定する必要があり
- :私は、私はまだ、まだ理由が見つからない2つの問題を抱えていますimmediate = true、そうでない場合、ajax2で定義されたイベントは実行されません。
私はこの原因がわかりません。
- select2にimmediate = trueを設定すると、ajax2イベントが呼び出されました。しかし、select2コントロールの値として割り当てられ、まだ値が割り当てられていないtypeName変数が選択されているため、select3にまだ値が割り当てられていません。ここで
誤差画像です:http://i970.photobucket.com/albums/ae190/swenteiger7/richFaces%20error-%20110312/testcase1Error.png
アプリケーション:私もこの質問と仲良くする(ネット豆のIDEで開かれた)私のアプリケーションプロジェクトを送りました。 - CarBeanが管理するBeanを定義したWeb/Web-INFフォルダのfaces-config.xmlファイル - Webフォルダのtestcase1フォルダ(threeSelectExample.xhtmlを持つ)。 - Beanパッケージとutilsパッケージを使用してマネージドBeanを保存します(testcase1ではCarBeanが管理するBeanに集中します)。
私の添付ファイルに私のアーカイブプロジェクトをダウンロードできます。 http://www.mediafire.com/?fnab3824b8vwd93
あなたがダウンロードするためにいくつかの問題がある場合は、ご連絡ください:ここでは
が自分のアプリケーションである(https://community.jboss.org/wiki/HowToAddRichFaces4xToProjectsNotBasedOnMaven)アプリケーションを実行するためにJSF2.0とRichFacesのフレームワークを追加してください。私。ありがとうございました。
あなたの驚くべき答えに感謝します。私はそれを確認します:) –
こんにちはLuiggi。私は3日前にあなたの提案を試みました。私はまだ2つのajaxイベントを使用することはできません。この問題は、2 を使用し、残念なことに