打开一个新页面,当我点击一个JSF表

打开一个新页面,当我点击一个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代码中。任何想法如何解决这一问题?

+0

如果你想打开一个新的链接页面,只需在'

'中使用'target =“_ blank”'。 – 2013-04-07 23:57:47

我不知道我是否正确地解决了您的问题。但是,如果您尝试重新定向点击commandLink,我认为您的问题是,您无法使用actionListener属性重定向,而应使用action属性,否则返回值pageRedirect将不起作用。

查看oracle docs的进一步解释。

+0

我更新了我的帖子。 – 2013-04-07 17:21:06

+0

你的桌子是什么样的?每行都有一个'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; 
} 

问候,