1

私はこれで私のロープの終わりにいます。私はJSFを初めて使用するので、これはおそらく多くのことについての私の誤解です。

<ui:composition>
    <f:view>
         <tr:form>
             <ui:fragment rendered="#{param['type'] eq 'myType'}">
                <ui:include src="/home/myPage.jspx" />
            </ui:fragment>
        ......

ページに特定のタイプを渡します。フォームの特定のフィールド/基準が表示され、単一の検索があるため、Beanがすべてをバックアップします。

myPage.jspx内に私は持っています:

action="#{MyBean.submitForm}"

onsubmit = "alert('hi');"ですが、機能しません。フォーム要素の属性として機能します。

最も紛らわしいのはそれだと思います

valueChangeListener="#{MyBean.stateChanged}"

myPage.jspxのフィールドで機能します

アクション(ボタンの属性)が機能しないのはなぜですか?

4

1 に答える 1

1

フォーム送信の処理中に、ボタンまたはその親コン​​ポーネントの1つがそうでない場合rendered、ボタンのアクションは呼び出されません。renderedフォーム送信の処理中に、フォームが表示されたときと同じように属性が評価されることを確認する必要があります。あなたの場合、名前が。のリクエストパラメータの値に依存していますtype

この特定のケースでは、コマンドボタンにネストされtypeたリクエストパラメータを保持することで問題を解決できます。<f:param>

<h:commandButton ...>
    <f:param name="type" value="#{param.type}" />
</h:commandButton>

または、JSF 2.0を使用している場合は、Beanをビュースコープに配置typeし、管理対象Beanにパラメータを設定<f:viewParam>することで解決することもできます。

<f:metadata>
    <f:viewParam name="type" value="#{bean.type}" />
</f:metadata>

...

<ui:fragment rendered="#{bean.type eq 'myType'}">

参照:

于 2012-02-07T21:21:55.333 に答える