2011-12-15 8 views
0

単純なJSFアプリケーションを構築しようとしています。 1つは取得できません、ページリロードをトリガーするためにどのようなメカニズムを使用するかです。私はJSF内のナビゲーションの理解

public String submit() { 
    this.description.setRendered(true); 
    return null; 
} 

<h:selectOneMenu 
    id="ChallengesListBox" 
    onchange="submit()" 
    valueChangeListener="#{bean.projectselected}"> 
    <f:selectItems value="#{bean.projectnames}"/> 
</h:selectOneMenu> 

<h:commandButton value="submit" action="#{bean.submit}" /> 

次試してみました。しかし、これは効果がありません。 Beanメソッド

public String submit() 

はデバッグモードで見ることができます。

答えて

0

これはナビゲーションとは関係ありません。 Beanアクションメソッドが呼び出されない理由はたくさんあります。あなたはこの回答でそれらのすべてを見つけることができます:

commandButton/commandLink/ajax action/listener method not invoked or input value not updatedは、私はあなたがどちらかだけで何の<h:form>きていないこと、またはあなたが、またはそのボタンの形(最初のものは、その後submit()に呼び出される)内に複数のボタンを持っていることをsuspestフォーム提出の処理中にはそれ自身ではrenderedではありません。具体的な問題への無関係


、このJSF 1.xのスタイルのアプローチは非常に不器用です。あなたはJSF 2.xの上ですでに明らかにしているとして、私は以下の非常に単純なアプローチを提案:

<h:selectOneMenu value="#{bean.projectname}"> 
    <f:selectItems value="#{bean.projectnames}" /> 
    <f:ajax render="somepanel" /> 
</h:selectOneMenu> 
<h:panelGroup id="somepanel"> 
    <h:outputText value="#{bean.description}" rendered="#{not empty bean.projectname}" /> 
</h:panelGroup> 

#{bean.projectname}ドロップの選択に応じて、空/ nullでないとき(これは#{bean.description}値をレンダリングします

すべてのbinding属性がバッキングBeanから削除されていることを確認してください。 <h:panelGroup id="somepanel">の中に入力/ボタンコンポーネントがある場合は常に、Beanが@ViewScopedであることを確認してください。

関連する問題