1

因为我不是 javascript 也不是 jsf 专家,所以我问是否可以定义一个全局变量,然后将其作为参数传递给动作绑定方法。也许举个例子会更清楚...... :)

在我的 xhtml 代码中应该是这样的:

...
<script type="text/javascript">
  var isEdit = "false";

  //<![CDATA[ 
    function editSelected(selBox, inputFiled)
    {
      var htmlstring = selBox.options[selBox.selectedIndex].text;
      inputFiled.value = htmlstring;
      isEdit = "true";
    }
  //]]>
</script>

...

<h:commandLink
  styleClass="waiButton"
  value="#{lakshmiMsg.commonButtonAdd}"
  action="#{detailController.addCreator(**isEdit**)}"
  rendered="#{detailModel.mode != detailModel.viewMode}">
</h:commandLink>
...

这样的事情可能吗?如果没有,是否有其他方法?

4

2 回答 2

1

让您的 JavaScript 更新隐藏的表单字段可能会更好地处理此类事情。commandLink 上的操作在服务器上进行评估,而 JavaScript 中的函数在浏览器中运行。

使用隐藏的表单字段,您可以在 addCreator 方法中检查它(不是作为参数,而是从请求中)以查看您是否处于编辑模式。

于 2012-06-08T15:07:24.007 回答
1

您可以通过 JS 更改隐藏的输入字段。例如

<h:inputHidden id="edit" value="#{bean.edit}" />

document.getElementById("form:edit").value = isEdit;

另一种方法是不要editSelected()在 JS 中完成这项工作,而是用<f:ajax>魔法在纯 JSF 中完成这项工作。由于代码不完整且没有足够的自我记录,因此对此的功能要求尚不清楚,因此我无法为此提供启动示例。

于 2012-06-08T15:19:48.710 回答