使用JSF </rich:datatable>中的JavaScript更新<rich:datatable>的Bean属性

时间:2013-12-20 04:32:51

标签: java javascript jsf

我有一个<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>

访问列表

1 个答案:

答案 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>');
}