使用全局变量作为动作绑定方法的参数

时间:2012-06-08 14:57:02

标签: javascript jsf-2

由于我不是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>
...

会是这样的吗? 如果没有,还有其他方法吗?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

您可以通过JS更改隐藏的输入字段。 E.g。

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

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

另一种方法是不要在JS中执行editSelected()工作,而是使用<f:ajax>魔法在纯JSF中完成工作。由于功能要求不明确,因为代码不完整而且不能自我记录,我无法给出启动示例。