2013-12-20 41 views
0

我有<rich:dataTable>,並且想用'onclick'使用JavaScript來更新bean property。 請找試過貼碼,使用JSF中的JavaScript更新<rich:dataTable>的Bean屬性

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--%> 
} 

我嚴格不想使用<a4j:commandLink>actiononcomplete屬性,因爲我做不想致電server更新bean property

上面的代碼工作不正常,每次它採取<rich:dataTable>LastIndex

幫我訪問基於rowIndex的列表。

回答

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