【问题标题】:Update Bean Property of a <rich:dataTable> using JavaScript in JSF在 JSF 中使用 JavaScript 更新 <rich:dataTable> 的 Bean 属性
【发布时间】:2013-12-20 04:32:50
【问题描述】:

我有一个&lt;rich:dataTable&gt; 并希望使用JavaScriptbean property 更新为“onclick”。 请找到尝试发布的代码,

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

我绝对不想使用&lt;a4j:commandLink&gt;actiononcomplete 属性,因为我不想调用server 来更新bean property

上面的代码运行不正常,每次都取&lt;rich:dataTable&gt;LastIndex

帮助我访问基于rowIndex的列表。

【问题讨论】:

    标签: java javascript jsf


    【解决方案1】:

    您可以将 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>');
    }
    

    【讨论】:

      猜你喜欢
      • 2012-06-25
      • 1970-01-01
      • 2013-12-30
      • 1970-01-01
      • 2011-06-26
      • 2016-01-31
      • 2013-01-17
      • 2020-02-20
      • 2013-05-07
      相关资源
      最近更新 更多