0

你能帮我做这件事吗?我试图通过单击命令按钮从我的 javascript 中的支持 bean 中获取价值。

这是我的 jsf 命令按钮

   <h:commandButton id="me" value="test" action="#{ques.conversiontostring}"
         onclick="mystring()"/>

这是我的 javascript 函数

   function mystring()
    {
    var mystring = window.document.getElementById("form:me").click(); 
    alert(mystring);

    }

我的 bean 返回一个我存储在 mystring 变量中的字符串,但是当我发出警报时,我得到空值。如果有人帮助这样做,那就太好了。提前致谢。

4

2 回答 2

1

我知道您想显示一个由操作方法设置的字符串值?您只能在完成后显示它。您需要意识到 JSF 和 JS 并不像您对编码所期望的那样同步运行。JSF 基本上是一个 HTML 代码生成器。JS 仅适用于当前的 HTML DOM 树。您需要让 JSF 以这样的方式生成 HTML 代码,即一旦 HTML 响应到达网络浏览器,JS 代码就会被执行。

假设你有这个 JS:

function show(string) {
    alert(string);
}

并假设你有这个 bean:

private String message;

public void show() {
    message = "Hello!";
}

public String getMessage() {
    return message;
}

如果您使用的是 JSF 1.x,请使用以下方法:

<h:commandButton value="show" action="#{bean.show}" />
<h:panelGroup rendered="#{not empty bean.message}">
    <script>show('#{bean.message}');</script>
</h:panelGroup>

如果您使用的是支持 ajax 的 JSF 2.x,您也可以使用以下方法:

<h:commandButton value="show" action="#{bean.show}">
    <f:ajax render="message" />
</h:commandButton>
<h:panelGroup id="message">
    <h:panelGroup rendered="#{not empty bean.message}">
        <script>show('#{bean.message}');</script>
    </h:panelGroup>
</h:panelGroup>
于 2012-01-10T12:30:57.117 回答
0

你的意思是这样的?

<h:commandButton id="me" value="test" action="#{ques.conversiontostring}"
     onclick="myFunction('#{ques.mystring}')"/>

function myFunction(message)
{
  alert(message);
}
于 2012-01-10T08:56:03.877 回答