我有一个<rich:dataTable>
,想要使用bean property
使用'onclick'更新JavaScript
。
请找到试用过的代码,
JSF代码
<rich:dataTable value="#{myBean.beanList}"
rowIndex="rowIndex"
var="beanName">
<facet name="header">
<rich:column>
<h:outputText value="Sample Header"/>
</rich:column>
</facet>
<rich:column>
<a4j:commandLink value="Apple"
onclick="modifyScript(#{beanName.booleanProperty})"> <%--Calling modifyScript--%>
<a4j:jsFunction name="jsFunction">
<a4j:actionparam name="actionParam"
assignTo="#{beanName.booleanProperty}"/>
</a4j:jsFunction>
</a4j:commandLink>
</rich:column>
</rich:dataTable>
的JavaScript
function modifyScript(booleanProperty)
{
booleanProperty = !booleanProperty; <%--Modifying the bean property--%>
historyAllocatedFunction(booleanProperty); <%--Calling the JS Function to assign the updated bean property--%>
}
我严格地不想使用action
的{{1}}和oncomplete
属性,因为我不想调用<a4j:commandLink>
来更新server
。
上述代码无法正常运行,每次使用bean property
的 LastIndex 。
帮助我根据<rich:dataTable>
答案 0 :(得分:0)
您可以将bean属性beanName.booleanProperty
分配给隐藏的输入。喜欢这个
<rich:column>
<a4j:commandLink value="Apple" onclick="modifyScript(#{rowIndex})"></a4j:commandLink>
<h:inputHidden value="#{beanName.booleanProperty}" id = "hiddenInput"></h:inputHidden>
</rich:column>
然后使用JS,您可以更改隐藏输入的值。提交表单时,隐藏的输入将分配给服务器端bean属性。
<强>的Javascript 强>
function modifyScript(index)
{
$j("#formId\\:tableId\\:hiddenInput\\:" + index).value('<new-value>');
}