5

有没有办法<p:commandButton>用 Javascript 改变一个值?

我试图在其中设置 awidgetVar<p:commandButton>它没有任何setValue()功能或类似的东西。由于我的 XHTML 的其他特定问题,我无法将它绑定到托管 bean。

4

2 回答 2

6

JSF 生成 HTML。JavaScript 适用于 HTML。在编写 JavaScript 代码时,如果您已经无法从头到尾告诉您它将生成哪些 HTML 代码,请不要过多地查看 JSF 源代码。

在您喜欢的浏览器中打开 JSF 页面,右键单击并查看源代码。生成的 HTML 输出<p:commandButton value="foo" />如下所示:

<button id="formId:buttonId" name="formId:buttonId" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" onclick="PrimeFaces.ab({formId:'formId',source:'formId:buttonId',process:'@all'});return false;" type="submit">
    <span class="ui-button-text">foo</span>
</button>

看,按钮有一个<span>子元素,其中包含值。

所以,这块 JS 改变按钮的值bar应该这样做:

document.getElementById("formId:buttonId").firstChild.innerHTML = "bar";
于 2012-05-11T04:27:46.497 回答
0

这是使用 widgetVar 的更好方法:

假设我们将 confirmWgt 设置为 <p:commandButton> widgetVar,设置其值的 javascript 代码将是:

PF('confirmWgt').jq.text("New Value");

使用这种方式,您可以确定将来 primefaces 应用的 html 代码中的任何更改都不会导致更新其版本时出现任何问题。

于 2020-12-15T06:28:47.860 回答