我有一个数据表,其中一列包含特定项目的状态。状态在列中显示为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。请帮忙。
答案 0 :(得分:1)
如果你使用primefaces,它可以很容易地使用 p:remoteCommand
首先,使用javascript获取commandLink
的id,然后您可以使用操作将其添加到您的bean中。
这是一个简单的例子。请查看。
<强>更新强>
<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);
}
也许对你有帮助。