JSF commandLink onclick EL表达式重新评估

时间:2014-10-15 19:55:01

标签: jsf commandlink

我有一个像这样的JSF命令:

<h:commandLink id="testId" onclick="if (#{bean.isPageOpen}) dlg.show();" />

boolean bean.isPageOpen最初为false,因此未打开dlg小部件。现在,当我更改条件,即bean.isPageOpen返回true时,窗口小部件仍然无法打开。

EL表达式只评估一次,而且从不再评估过JSF commandLink吗?

谢谢, - CSN

1 个答案:

答案 0 :(得分:1)

Javascript代码在页面加载时产生。如果你检查你的页面来源,你可以看到这样的onclick。

 onclick="if (false) dlg.show();"

如果你想在你的bean中使用更新的值。你可能会使用这样的结构。我正在使用primefaces。

<p:inputText id="textId" value="#{{bean.isPageOpen}" />
<h:commandLink id="testId" onclick="refresh(); if (document.getElementById('textId').value=='true') dlg.show();" />
<p:remoteCommand name="refresh" actionListener="#{bean.updateisPageOpen}" update ="textId"/>