0

入力値を jsf action/actionlistner に渡そうとしていますが、いくつか問題があります: このメソッドを試すと、( is not valid:

<h:inputText binding="#{pageNoInput1 }" style="font-family:verdana;font-size:0.9em;" maxlength="4" size="4"/>
<a4j:commandLink style="font-family:verdana;font-size:0.9em; margin-left:5px;" value="GO" reRender="deviceList, messagesForm" actionListener="#{viewDevicesBean.goToPageNo(pageNoInput1.value)}" />

このメソッドを試すと、バックエンド Bean で null 値を取得しています: event.getComponent().getAttributes().get("pageNo");

<h:inputText binding="#{pageNoInput1 }" style="font-family:verdana;font-size:0.9em;" maxlength="4" size="4"/>
<a4j:commandLink style="font-family:verdana;font-size:0.9em; margin-left:5px;" value="GO" reRender="deviceList, messagesForm" actionListener="#{viewDevicesBean.goToPageNo}">
    <f:param value="#{pageNoInput1.value}" name="pageNo"/>
</a4j:commandLink>
4

1 に答える 1

1

入力値を jsf action/actionlistner に渡そうとしていますが、いくつか問題があります: このメソッドを試すと、( is not valid:

これは、サーブレット 3.0 / EL 2.2 以降でのみサポートされています。したがって、Servlet 3.0 互換のコンテナー (Tomcat 7、Glassfish 3 など) にデプロイすると、問題なく動作します。ただし、サーブレット 2.5 コンテナー (Tomcat 6、Glassfish 2 など) をターゲットにしている場合は、EL でパラメーター化されたメソッドを使用できるようにするには、JBoss EL をインストールする必要があります。しかし、Servlet 2.4 コンテナー (Tomcat 5.5、SJAS など) をターゲットにしている場合は、完全に不運です。

以下も参照してください。


このメソッドを試すと、バックエンド Bean で null 値を取得しています。event.getComponent().getAttributes().get("pageNo");

UIComponent#getAttributes()コンポーネントの属性を返します。これは、それら<h:someComponent attribute1="value1" attribute2="value2" ...>とネストされたものなどです。ただし、この構成では意味をなさない<f:attribute name="attribute3" value="value3">a を追加しているだけです。<f:param><f:param>フォームの送信中ではなく、フォームの表示中に評価されます。

基本的に 2 つのオプションがあります。

  1. ばかげて難しい方法でそれを行うのではなく、通常の方法で入力値を Bean プロパティにバインドしてください。

     <h:inputText value="#{bean.value}">
    

    このvalueように、action(listener) メソッド内ですぐに使用できます。

  2. それ (およびその親フォーム) に固定 ID を与えます。

     <h:form id="formId"><h:inputText id="inputId">
    

    リクエスト パラメータ マップから手動で取得します。

     String value = externalContext.getRequestParameterMap().get("formId:inputId");
    
于 2013-08-14T17:01:48.303 に答える