由于我不是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>
...
会是这样的吗? 如果没有,还有其他方法吗?
答案 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中完成工作。由于功能要求不明确,因为代码不完整而且不能自我记录,我无法给出启动示例。