2016-11-13 1 views
1

私はJSFを通してチャットシステムを実現しようとしています。 h:commandButtonを押すと、h:inputTextに入力されたすべてのテキストが保存されます。その後、今までに入力したすべてのデータを印刷するテーブルがあります。時間内にはJSF(gettableのみ)

@ManagedBean 
public class UnicoBean { 
Facade f = new Facade(); 

public void setText(String s) throws Exception { 
    f.setText(s); 
    } 

public List<Message> getAll() throws Exception { 
    return f.getAll(); 
    } 

public void test() { 
    System.out.println("bean called on jsf"); 
    } 
} 

:backbeanため

<h:form> 
    <h:inputText id="id1" value="#{unicoBean.text}" /> 
    <h:commandButton id="botao" value="Entrar" action="#{unicoBean.test}" 
     onclick="test()" 
    /> 
</h:form> 
<h:dataTable value="#{unicoBean.all}" var="msg"> 
    <h:column> 
    #{msg.text} 
</h:column> 
</h:dataTable> 
<script> 
    function test() { 
     alert("alert"); 
    } 
</script> 

そして、この:この方法では、私は、JSFのために、次のコードを持っているのinputText私はそれらを取得し、HTMLに戻って投げていない、値を設定したいです。残念なことに、JSFは、私のBeanで公開されているように、何も取得したくない場合でも、「式は取得できません」と述べています。どのように私はこれを解決する?

答えて

1

getter/setter戦略を使用してこれを実現することは、JSFではなくEL(Expression Language)の一部であるため不可能です。 JSFはこれを使用して、HTMLコンポーネントのデータを適切なゲッターとセッターを介してBeanのフィールドにバインドします。

UIInputbinding属性を使用すると、入力フィールド値をアクションボタンの引数として渡すことができます。

<h:form> 
    <h:inputText id="id1" binding="#{input1}" /> 
    <h:commandButton id="botao" value="Entrar" action="#{unicoBean.test(input1.value)}" 
     onclick="test()" /> 
</h:form> 

そして、あなたのアクションメソッドから新しい値を受け取る:

public void test(String value) { 
    System.out.println("bean called on jsf: " + value); 
} 
関連する問題