属性に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&includeViewParams=true"
。
結局のところ、具体的な機能要件を詳細に説明していなかったため、適切なソリューションを提案することは困難です。