Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSF只支持gettable_Java_Jsf 2 - Fatal编程技术网

Java JSF只支持gettable

Java JSF只支持gettable,java,jsf-2,Java,Jsf 2,我试图通过JSF实现一个聊天系统。按下h:commandButton后,将存储在h:inputText内键入的所有文本。在此之后,我有一个表来打印到目前为止键入的所有数据。这样,我就有了JSF的以下代码: <h:form> <h:inputText id="id1" value="#{unicoBean.text}" /> <h:commandButton id="botao" value="Entrar" action="#{unicoBean.t

我试图通过JSF实现一个聊天系统。按下
h:commandButton
后,将存储在
h:inputText
内键入的所有文本。在此之后,我有一个表来打印到目前为止键入的所有数据。这样,我就有了JSF的以下代码:

<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>

#{msg.text}
功能测试(){
警报(“警报”);
}
对于backbean:

@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");
    }
}
@ManagedBean
公共类UnicoBean{
立面f=新立面();
public void setText(字符串s)引发异常{
f、 setText(s);
}
public List getAll()引发异常{
返回f.getAll();
}
公开无效测试(){
println(“在jsf上调用的bean”);
}
}

在h:inputText内部,我只想设置值,而不是获取值并返回html。不幸的是,JSF说“表达式是不可获取的”,即使我不想获取任何东西,只想设置,就像在我的Bean上公开的那样。如何解决这个问题?

使用getter/setter策略不可能实现这一点,因为它不是JSF的一部分,而是表达式语言(EL)。JSF只使用它通过适当的getter和setter将HTML组件的数据绑定到bean的字段

但是,您可以使用
binding
attribute via将输入字段值作为参数传递给操作按钮:

<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);
}