2013-04-07 87 views
0

我有這個字中,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

回答

1

我不知道我是否正確地解決了您的問題。但是,如果您嘗試重新定向點擊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

1

你應該調試你的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; 
} 

問候,

相關問題