如何在JavaScript函数中直接更新JSF Java字符串



我想知道如何直接从JavaScript函数中更新我的背bean中的字符串。

我的示例试图调用JavaScript函数(字符串IMG将在其中更新),然后我想在保存函数中访问其新的更新内容,这是按钮的操作事件。

这是XHTML文件的摘录:

<Script>
function jsSave(){
     var text=document.getElementById("form:img");
     text.value="New text value";
    }
    </Script>
  <p:commandButton value="Change text" onclick="jsSave();" action="#{backbean.save()}"/> 
  <h:outputText value="#{masterpage_bean.img}" id="img"/>

在背bean中我有此代码:

   String img;
public String getImg() {
    return img;
}
public void setImg(String img) {
    this.img = img;
}
   public String save(){
    String tex;
    tex=img;
   // I want to do some stuff with the updated value of img here.

 return null;
}

javaScript函数位于客户端,而托管递减则位于服务器端。这就是为什么您需要完整的帖子或AJAX请求。

您可以通过将<f:setPropertyActionListener>嵌套到<p:commandButton>中来使用内置的JSF功能。这将以特定值更新托管Bean中的特定属性。对于Exameple:

<p:commandButton value="Change text" action="#{backbean.save()}">
    <f:setPropertyActionListener value="New text value" target="#{masterpage_bean.img}" />
</p:commandButton>

我代码中的问题是函数名称的拼写错误(在JavaScript中)。因此,问题中的示例实际上将完美地工作。因此,这是一种可用于直接从JavaScript函数更新Javabean变量的内容的技术。一个非常有用的实例是您要捕获画布的内容并将其保存在Java中。

如果您正在使用PrimeFaces,另一种真正简单的方法可以在JavaScript和Javabean之间传递信息。

最新更新