最初にBeanプロパティを設定してから、commandButtonなどを使用して引数なしでメソッドを呼び出す代わりに、Beanメソッドを呼び出してビューから直接パラメーターを渡すことは可能ですか?
アイテムのリストがあり、各アイテムにはアクションのリストがあります。状態を減らすために、いくつかのremoteCommand
(s)の代わりに単一の素数commandButton
を使用しています。ビューからアクショントリガーを取得するときに、JavaScriptからremoteCommand
を呼び出しますが、remoteCommand
は1つなので複数のアイテムに使用されるため、アイテムのIDも渡す必要があります。最初にBeanプロパティとして設定するのではなく、項目のIDを直接引数としてBeanメソッドに渡す方法があるかどうか疑問に思っています。そうする方法はありますか?
実際には、ページに項目の長いリストがある場合に、ページ上の複数のcommandButtonを処理するためのより良い方法を探しています。
提案?ありがとう。
Primefaces 3.0RC1でのJSF 2.1.6 Mojarraの使用
メソッド引数の引き渡しは、サーブレット3.0の一部であるEL 2.2以降でサポートされています。したがって、Webアプリケーションがweb.xml
で宣言されたServlet 3.0仕様に準拠するServlet 3.0互換コンテナ(Tomcat 7、Glassfish 3など)で実行される場合(暗黙的にServletを必要とするJSF 2.1を使用しているため、これはおそらく当てはまります) 3.0)、その後、次の形式でBeanアクションメソッドにメソッド引数を渡すことができます。
<h:commandButton value="Submit" action="#{bean.submit(item.id)}" />
と
public void submit(Long id) {
// ...
}
次のように、価値のあるオブジェクトを渡すこともできます。
<h:commandButton value="Submit" action="#{bean.submit(item)}" />
と
public void submit(Item item) {
// ...
}
サーブレット2.5コンテナーをターゲットにしている場合は、EL実装を、たとえば同じ構造をサポートするJBoss ELで置き換えることで同じことを達成できます。 ELの引数/変数/パラメータを使用して直接メソッドまたはメソッドを呼び出す も参照してください。
はい、そうです。
<h:commandButton action="#{bean.method(object)}" />
これを見る http://www.mkyong.com/jsf2/4-ways-to-pass-parameter-from-jsf-page-to-backing-bean/
このような引数でManagedBeanメソッドを呼び出すことができます。
<h:commandButton actionListener="#{stateBean.delete(row.stateID)}"
value="Delete" id="btnDeleteS">
<f:ajax event="action" execute="@form" render="@form"/>
</h:commandButton>
対応するManagedBeanは次のようになります。
@ManagedBean
@RequestScoped
public class StateBean
{
@EJB
private RemoteInterface obj=null;
public void delete(String stateID)
{
//Code stuff here.
}
}
このように<f:setPropertyActionListener></f:setPropertyActionListener>
を使用して、ManagedBeanプロパティの値を直接設定することもできます。
<h:commandButton value="Delete" id="btnDeleteS">
<f:setPropertyActionListener target="#{stateBean.someProperty}"
value="#{someValue}"/>
<f:ajax event="action" execute="@form" render="@form"/>
</h:commandButton>