4

別のjsf faceletに移動するために使用したいコマンドボタンがありますが、有効なメソッド式ではありません:

 <h:commandButton value="Save Edits" action="editOrDeletePage.xhtml?editing=true;#{product.id};name=#{product.productName};description=#{product.description};quantity=#{product.quantity}"/>

持っているだけで動作させることができます

action="editOrDeletePage.xhtml?editing=true"

渡すプロパティが複数ある場合、それらを正しく区切っていないと思います。何か案は?

4

2 に答える 2

9

属性にEL式が含まれている場合action、それはメソッド式として解釈されます。したがって、実際にはを使用する場合にのみ有効ですaction="#{bean.someMethod}"。ただし、この試みは有効なメソッド式を表すものではなく、代わりに、action属性で受け入れられない値式を表しています。

フォーム送信に追加のリクエスト/ビューパラメータを追加する場合は、むしろを使用する必要があります<f:param>

<h:commandButton value="Save Edits" action="editOrDeletePage.xhtml">
    <f:param name="editing" value="true" />
    <f:param name="id" value="#{product.id}" />
    <f:param name="name" value="#{product.productName}" />
    <f:param name="description" value="#{product.description}" />
    <f:param name="quantity" value="#{product.quantity}" />
</h:commandButton>

これらのパラメータは(ブラウザのアドレスバーに表示されるように)リクエストURLに含まれず、理論的なアプローチでもそれが行われないことに注意してください。つまり、JSFコマンドボタンはHTML<input type="submit">要素を生成します。action親HTMLの属性で指定されたものと同じURL <form method="post">

また、これらのパラメーターは、フォームの送信中ではなく、フォームの表示中に評価されることに注意してください。送信された値をその方法で渡すことを意図している場合は、基本的に間違っています。アクションとして使用できるように、それらをビューパラメータとして指定したい場合がありますaction="editOrDeletePage?faces-redirect=true&amp;includeViewParams=true"

結局のところ、具体的な機能要件を詳細に説明していなかったため、適切なソリューションを提案することは困難です。

于 2012-12-16T01:17:42.117 に答える
0

使用している場合は、これにJSF2使用できますh:button

<h:button value="press here" outcome="editOrDeletePage">
    <f:param name="productId" value="#{product.id}" />
</h:button>
于 2012-12-16T00:33:03.537 に答える