2013-12-20 1 views
0

У меня есть <rich:dataTable> и вы хотите обновить bean property с помощью «onclick», используя JavaScript. Пожалуйста Найти испытанный отправил код,Обновление свойства Bean <rich: dataTable> с использованием JavaScript в JSF

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 и oncomplete атрибуты <a4j:commandLink>, потому что я не хотите называть server для обновления bean property.

Приведенный выше код не работает нормально, каждый раз он принимает LastIndex of <rich:dataTable>.

Помогите мне получить доступ к списку, основанному на 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, вы изменяете значение скрытого ввода. Когда форма отправляется, скрытый ввод будет привязан к свойству бокового компонента сервера.

Javascript

function modifyScript(index) 
{ 
    $j("#formId\\:tableId\\:hiddenInput\\:" + index).value('<new-value>'); 
} 
Смежные вопросы