无法在onclick方法中传递参数

时间:2013-12-02 13:22:34

标签: javascript jquery richfaces

我有一个丰富的模态面板。在里面,我有一个丰富的:选项列表。我在同一个面板中有一个Save按钮。当我单击“保存”按钮时,我想将所选的id作为参数发送到按钮的onclick属性中。 (我使用的是:commandLink for button)。但无论如何我无法发送参数。当我在javascript方法中使用alert检查它时,它将变为null。

我的富人:选项列表代码是

<h:panelGroup id="distTypesPanel">  
    <div class="form-row fl" style="height: 180px; width: 400px;">  
        <label for="dist_type">Distribution Type:<span  
            class="required">*</span> <h:message for="distTypesList"  
            errorClass="error" />  
        </label>  
        <rich:pickList id="distTypesList" copyAllControlLabel=" "  
            copyControlLabel=" " removeControlLabel=" "   
            removeAllControlLabel=" " value="#{asset.selectedDistTypes}"  
            converter="javax.faces.Integer">  
            <f:selectItems  
                value="#{lookupManager.setUpDMRLkpDistTypeMap()}" />  
        </rich:pickList>  
    </div>  
</h:panelGroup>  

保存按钮代码为:

<a:commandLink  styleClass="btn green-btn save-btn fr"  onclick="updateLOB(#{asset.selectedDistTypes})" reRender="updateLOBPanel"  
    oncomplete="Richfaces.hideModalPanel('updateLOBPanel');document.getElementById('lobMasterCheckBox').checked=false;"   
    ajaxSingle="true" style="margin: 10px; align:right;" >  
<span> Save </span>   
</a:commandLink>  

Javascript方法是:

function updateLOB(selectedDistTypes){
    alert(selectedDistTypes);
    var idList = jQuery("#assetSearchResults").jqGrid('getDataIDs');
    var idListToUpdateLOB = idList.join(",");
    if(idListToUpdateLOB.length >0){
        updateLOBOfAssets(idListToUpdateLOB);
    }
}

Js FUnction:

<a:jsFunction name="updateLOBOfAssets" oncomplete="gridReload();"
           action="#{assetManager.updateLOB()}" ajaxSingle="true">
           <a:actionparam name="param1" assignTo="#{assetManager.idList}" />
        </a:jsFunction>

selectedDistTypes将显示为null。你能帮我正确发送参数吗?

2 个答案:

答案 0 :(得分:2)

当呈现页面时,所有EL表达式都被解析。这意味着您的commandButton设置为onclick="updateLOB([])",因为在呈现按钮时列表为空。

有几种方法可以执行您想要执行的操作,但我不知道您在updateLOBOfAssets函数中使用ID做了什么。最简单的方法是从bean中检索ID,而不是用JavaScript传递它们。

答案 1 :(得分:0)

这有帮助吗?

onclick="updateLOB('#{asset.selectedDistTypes}')"

看起来不像你引用的值。