如何传递所选CommandLink的id

时间:2012-10-18 09:39:42

标签: java jsf commandlink

我有一个数据表,其中一列包含特定项目的状态。状态在列中显示为commandLink。如果从数据库中检索的项目状态是逗号分隔值,如Status1,Status 2,则必须在同一项目的列中显示2个命令链接,即一个具有Status1,另一个具有状态2.

<h:commandLink id="status1Link" value="#{pc_test.status1}"
                            onclick="showAssignKeyRvPopup(#{plist.t3Id},'#{plist.t3FileName}','#{plist.status}');return false;"
                            rendered="#{plist.status == 'Status1,Status2'}"
                            update="assignKeyRvDialog">
                        </h:commandLink> 

以上是我用来显示commandLink的代码。单击时,它会显示一个弹出窗口,如果我clcik OK,我必须执行一个再次更新状态的操作。我在同一列中有2个commandLinks,我的问题是当我单击一个commandLink并执行操作时,我希望该commandLink的文本只能更改,而不是另一个。所以,我需要传递我点击的commandLink的id。请让我知道如何做到这一点。

我按照你的建议尝试了 -

<p:remoteCommand name="doSubmit" actionListener="#{pc_testmaps.doAssignUser}" />

<p:commandButton id="assignUser" value="Submit" onclick="doSubmit();"> </p:commandButton>

function doSubmit() {
            document.getElementById('nonMCLink') = commandLinkId;
            doAssignUser([{name:'commandLinkId', value:commandLinkId}]);
        }

And in the bean, 

public void doAssignUser() throws DelegateException {

        FacesContext context = FacesContext.getCurrentInstance();
        Map<String, String> map = context.getExternalContext().getRequestParameterMap();
        String linkStatus = (String) map.get("commandLinkId");
        System.out.println(linkStatus);
}

它仍然似乎不起作用,当我打印linkStatus值时,我得到它为null。请帮忙。

1 个答案:

答案 0 :(得分:1)

如果你使用primefaces,它可以很容易地使用 p:remoteCommand

首先,使用javascript获取commandLink的id,然后您可以使用操作将其添加到您的bean中。

这是一个简单的例子。请查看。

using remoteCommand

<强>更新

    <p:remoteCommand name="doSubmit"
        actionListener="#{yourBean.doSubmit}" />

<script type="text/javascript">
function onOKclick() {
$(document).ready(function() {
    var commandLinkID = "yourcommandlinkId" //or get id using javascript with name          
doSubmit([{name:'commandLinkID', value:commandLinkID}]);
    });         
}
</script>

弹出窗口中的OK按钮

  <h:commandButton onclick="onOKclick();" /> 
//calling onOKclick js function is important.you can call onOkclikc js function where you want 

你的bean中的doSubmitMethod;

public void doSubmit(){
  FacesContext context = FacesContext.getCurrentInstance();
            Map<String, String> map = context.getExternalContext().getRequestParameterMap();
           String value = (String) map.get("commandLinkID");
System.out.print(value);


}

也许对你有帮助。