有没有办法<p:commandButton>
用 Javascript 改变一个值?
我试图在其中设置 awidgetVar
但<p:commandButton>
它没有任何setValue()
功能或类似的东西。由于我的 XHTML 的其他特定问题,我无法将它绑定到托管 bean。
有没有办法<p:commandButton>
用 Javascript 改变一个值?
我试图在其中设置 awidgetVar
但<p:commandButton>
它没有任何setValue()
功能或类似的东西。由于我的 XHTML 的其他特定问题,我无法将它绑定到托管 bean。
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";
这是使用 widgetVar 的更好方法:
假设我们将 confirmWgt 设置为 <p:commandButton> widgetVar,设置其值的 javascript 代码将是:
PF('confirmWgt').jq.text("New Value");
使用这种方式,您可以确定将来 primefaces 应用的 html 代码中的任何更改都不会导致更新其版本时出现任何问题。