2010-01-15 67 views
3

我有一個h:數據表可顯示員工數據。 我希望用戶點擊時,員工姓名導航到新的網頁的URL看起來像JSF書籤問題

employees?id=<some id> 

我試圖JSP EL與JSF EL相結合,但沒有出路。

回答

2

如果您還沒有使用JSF 2.0,那麼您可以使用h:outputLink結合<f:param>,#{param}faces-config.xml

基本表例如:

<h:dataTable value="#{bean.employees}" var="employee"> 
    <h:column> 
     <h:outputLink value="employees.jsf"> 
      <f:param name="id" value="#{employee.id}" /> 
      <h:outputText value="View employee #{employee.name}" /> 
     </h:outputLink> 
    </h:column> 
</h:dataTable> 

基本faces-config.xml例如:

<managed-bean> 
    <managed-bean-name>employeeManager</managed-bean-name> 
    <managed-bean-class>com.example.EmployeeManager</managed-bean-class> 
    <managed-bean-scope>request</managed-bean-scope> 
    <managed-property> 
     <property-name>id</property-name> 
     <value>#{param.id}</value> 
    </managed-property> 
</managed-bean> 

基本com.example.EmployeeManager例如:

public class EmployeeManager { 
    private Long id; 
    private Employee employee; 

    @PostConstruct 
    public void init() { 
     this.employee = employeeDAO.find(this.id); 
    } 
} 

@PostConstuct註解的方法會之後調用豆建設和所有的注入和管理財產設置。有關更多信息和示例,另請參閱this article

+0

您的博客看起來不錯,謝謝:) 是你對@PostConstruct的提示正確的,我已經reialized這說明(在我的博客http://m-hewedy.blogspot.com/2010/01/列出它呼叫會話豆上的JSF-managed.html) 但這裏有一個問題,如果我需要把employee對象在使用H會話範圍:outputLink的? – 2010-01-22 12:27:29

+0

只是要'EmployeeManager'會話作用域bean。 – BalusC 2010-01-22 12:32:03

2

有兩種可能的解決方案,我能想到的:

  1. 使用JSF 2
  2. 如果你被困在JSF 1.x中(Java EE 6的一部分),使用PrettyFaces

如果它可以切換到Java EE 6服務器,我強烈建議選擇1號。

編輯:有2個標籤在JSF 2中添加的:<h:link /><h:button />。這些使用GET而不是POST。另外,看看<f:viewparam />。在此之上,還有很多其他精彩添加在JSF 2.簡要概述,請參閱this article

+0

那麼,使用JSF2會解決這個問題,因爲我切換到仍然面臨的問題後,害怕嗎? – 2010-01-15 13:47:03

+0

你不一定需要JSF2。這沒有意義。 – BalusC 2010-01-15 14:46:56

+0

你不需要* JSF 2。您可以修改您的視圖處理程序以接受接受查詢參數。但是,這是一個很不方便的做法。您也可以使用輸出鏈接。但是,這規避了JSF導航。 – 2010-01-15 15:00:53