2012-04-05 10 views
0

入力テキストエリアの値は、Bean側で決して設定されません。 RichaFacesを使用したJSF 1.2 3.3.3。h:inputTextareaは豊富な面では機能しません

<h:form id="name" rendered="#{not empty controller}"> 
      <h:panelGrid columns="1" styleClass="medium" columnClasses="subtitle,medium" style="text-align: left;" cellspacing="3px"> 
       <f:facet name="header"> 
        <h:outputText value="Comments"/> 
       </f:facet> 

       <h:inputTextarea value="#{controller.comments}" rows="10" cols="80" 
         immediate="true"></h:inputTextarea> 

       <div align="right"> 
        <a4j:commandButton value="#{msg['label.save']}" action="#{controller.saveData()}" reRender="name" /> 
       </div> 
      </h:panelGrid> 
     </h:form> 

そして豆で:JSFページは、UIを介して他のページに含まれる

public void saveData(){ 
    //logic 
} 

public String getComments(){ 
    return "comments"; 
} 

public void setComments(String comments){ 
    //logic 
} 

:次のコードを持って含まれ、コントローラパラメータとして必要なBeanを取得します。

コメントはgetメソッドで読み取られますが、setterは呼び出されません。saveData関数も呼び出されません。同じコントローラが別のページの他のデータに使用されており、文字どおり同じsaveDataメソッドが機能します。私はTextareaの価値が決して設定されていないのだろうか?

答えて

1

あなたが取得しているエラーは、この行のためにある:

<a4j:commandButton value="#{msg['label.save']}" 
    action="#{controller.saveData()}" reRender="name" /> 

はJSF1.2で、アクションに括弧を使用しないでください。

<a4j:commandButton value="#{msg['label.save']}" 
    action="#{controller.saveData}" reRender="name" /> 

また、あなたが投稿しているページがあなたがそれを呼び出すときに別のフォームの中にないことを確認してください。

UPDATE:あなたの最後のコメントに基づいて

が、私はあなたの問題は、この文では可能性が推測:

<h:form id="name" rendered="#{not empty controller}"> 

controllerが要求Beanであるならば、それはこのように、リクエストに応じて空になりますあなたのフォームの中の値は送られません。 Beanをリクエストスコープで保持し、Beanクラスに@KeepAliveアノテーションを追加することができます。

@KeepAlive(ajaxOnly=false) 
public class ControllerBean { 
    //your bean logic... 
    public void saveData(){ 
    //logic 
    } 

    public String getComments(){ 
     return "comments"; 
    } 

    public void setComments(String comments){ 
     //logic 
    } 
} 
+0

そうではありません - jboss ELは仕事をしています。そして、reRenderコンポーネントを除いて、まったく同じコードが他の部分で使用され、動作します。私の推測では、それは何らかの理由で文字列に変換されない他のオブジェクトを持っているということです。調査中... –

+1

別のマネージドBeanを使用して動作させようとしましたか? –

+0

確かに、別のクラスでうまくいきます。問題は、なぜですか? :) –

関連する問題