2

私はJBoss7上でprimefacesを使用してJSF2.0を使用しています。コードの一部に次のものがあります。

public void setItemValue(int value) {
    this.value = value;
}

そしてxhtmlで:

<p:commandButton ajax="true" value="Button" update="@form" 
action="#{bean.setItemValue(1)}"/>

問題は、ボタンをクリックすると、存在しないjavax.el.MethodNotFoundExceptionというメッセージが表示されることです。setItemValue(java.lang.Long)もちろんそうではありません。intまたはIntegerの値である必要があります。誰かがこの問題を見たことがありますか?ロングを受け取るために私の方法を変更する以外の方法はありますか?ありがとう!

編集:JBoss 7.2のスナップショットをダウンロードしたところ、正常に動作します。JBoss7.1.1のバグのようです:(

4

4 に答える 4

1

getBean メソッドで使用したり、プレフィックスを付けたりしないでくださいset(これは本当に悪い習慣です)。action属性は、getter や setter ではなくメソッド名を想定しています。

getBean 変数のゲッターとセッターにsetのみ使用されます

あなたsetItemValueを次のようなものに置き換えたほうがよいassignItemValue

このような:

<p:commandButton ajax="true" value="Button" update="@form" 
    action="#{bean.assignItemValue(1)}"/>

どこ

public void assignItemValue(Long value) { //you could also try with int value...
   //set the value to whenever you want too...
}
于 2012-07-03T05:22:51.193 に答える
1

アクションのメソッド式の型は

文字列アクション()

だから使う

 public String setItemValue(Integer value) {
    this.value = value;
    return null;
}

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

UPDATE パラメータを渡すなど、EL 2.2を最大限に活用するには、サーブレットのバージョンを3.0として宣言する必要があります。そのために、web.xml の web-app 要素を次のように変更します。

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       
 xmlns="http://java.sun.com/xml/ns/javaee" 
 xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee    
 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID"  
 version="3.0">
于 2012-07-03T00:31:56.003 に答える