打开一个新页面,当我点击一个JSF表
我有这个字中,h:outputLink的”我用它来打开一个新的页面,当我点击一个JSF表行:打开一个新页面,当我点击一个JSF表
<h:outputLink id="lnkHidden" value="page.html" style="text-decoration:none; color:white;">
<f:param name="id" value="#{item.value}" />
</h:outputLink>
我用这个JavaScript打开一个新的页面,当我点击一排:
<h:commandLink id="lnkHidden" style="text-decoration:none; color:white;"
actionListener="#{bean.pageRedirect}">
<f:setPropertyActionListener target="#{bean.sessionValue}" value="#{item.value}" />
</h:commandLink>
管理的bean:
// For clicking on a row and opening new page
function addOnclickToDatatableRows() {
//gets all the generated rows in the html table
var trs = document.getElementById('form:dataTable').getElementsByTagName('tbody')[0]
.getElementsByTagName('tr');
//on every row, add onclick function (this is what you're looking for)
for (var i = 0; trs.length > i; i++) {
var cells = trs[i].cells;
for(var j=1; j < cells.length; j++){
cells[j].onclick = new Function("rowOnclick(this.parentElement)");
}
}
}
function rowOnclick(tr) {
var elements = tr.cells[0].childNodes;
for(var i = 0; elements.length > i; i++) {
if ((typeof elements[i].id != "undefined") && (elements[i].id.indexOf("lnkHidden") > -1)) {
location.href=elements[i].href;
break;
}
}
return false;
}
我这样更新的代码
public void setSessionValue(Object value)
{
...........
}
public String pageRedirect()
{
return "/DatacenterProfile.html";
}
事实证明,JavaScript是尼特正常工作,因为我改为h:commandLink
。你能帮我解决这个问题吗?
PS
我测试用h:commandButton
<h:commandButton id="lnkHidden" style="text-decoration:none; color:white; display:none"
action="#{bean.pageRedirect}">
<f:setPropertyActionListener target="#{bean.sessionValue}" value="#{item.value}" />
</h:commandButton>
当我点击一张桌子WOR我总是重定向到页面
http://<ip>:8080/app/undefined
我假设问题出在JavaScript代码中。任何想法如何解决这一问题?
我不知道我是否正确地解决了您的问题。但是,如果您尝试重新定向点击commandLink
,我认为您的问题是,您无法使用actionListener
属性重定向,而应使用action
属性,否则返回值pageRedirect
将不起作用。
查看oracle docs的进一步解释。
我更新了我的帖子。 – 2013-04-07 17:21:06
你的桌子是什么样的?每行都有一个'commandButton'吗?你是否试图重定向到commandButton的位置,点击整个表格行或者你想要做什么?从您发布的内容看来,您似乎只是尝试通过单击commandButton来重定向静态URL。我真的不明白你打算用JS做什么,因为你在问commandButton。你能解释一下给我吗? – user1983983 2013-04-08 11:35:41
你应该调试你的JavaScript,尝试显示HREF价值,看它是否是你想要什么:
function rowOnclick(tr) {
var elements = tr.cells[0].childNodes;
for(var i = 0; elements.length > i; i++) {
if ((typeof elements[i].id != "undefined") && (elements[i].id.indexOf("lnkHidden") > -1)) {
alert(elements[i].href);
location.href=elements[i].href;
break;
}
}
return false;
}
问候,
如果你想打开一个新的链接页面,只需在'