2014-12-04 69 views
0

这是我的JSF(2.2)页:JSF提交按钮呈现在数据表

<h:form> 
<p> 
    Hiker-name 
</p> 
<p> 
    <h:selectOneMenu id="smenu"> 
     <f:ajax render="hikerActivities"/> 
     <c:forEach items="#{hikerPresenter.hikers}" var="hiker"> 
      <f:selectItem itemValue="#{hiker.hikerId}" itemLabel="#{hiker.hikerName}"/> 
     </c:forEach> 
    </h:selectOneMenu> 
    &nbsp; 
    &nbsp; 
    &nbsp; 
    &nbsp; 
    &nbsp; 
    &nbsp; 
    <h:commandButton id="submitHiker" value="Submit" action="#{hikerPresenter.getHikerActivities(hiker.hikerId)}"> 
     <f:ajax execute="smenu" render="hikerActivities"/> 
    </h:commandButton> 
</p> 
<p> 
    <h:dataTable id="hikerActivities" var="hikerActivity" border="1"> 
     <h:column> 
      <f:facet name="header" >Trip-date</f:facet> 
       #{hikerActivity.tripDate} 
     </h:column> 
     <h:column> 
      <f:facet name="header">Trip-fare</f:facet> 
       #{hikerActivity.tripFare} 
     </h:column>     
     <h:column> 
      <f:facet name="header">Trip-duration</f:facet> 
       #{hikerActivity.tripDuration} 
     </h:column>     
    </h:dataTable> 
</p> 

我想与命令按钮的点击,我的MBean的方法来获得来自被叫与hikerId选定的项目并在数据表上呈现。

这是我的MBean:

@ManagedBean 
@RequestScoped 
public class HikerPresenter { 
    @EJB 
    private HikerControllerLocal hikerController; 

    public HikerPresenter() { 
    } 

    public List<HikerAccessDTO> getHikers(){ 
     return hikerController.getHikers(); 
    } 

    public List<HikerActivityDTO> getHikerActivities(long hikerId){ 
     System.out.println("Get Hiker Activities Called"); 
     List<HikerActivityDTO> l = new ArrayList(); 
     l.add(new HikerActivityDTO(new Date(1417150800000L), "Montréal", "Valleyfield", "Amine", 22, 45)); 
     l.add(new HikerActivityDTO(new Date(1417160800000L), "Montréal", "Québec", "Farida", 33, 44)); 
     l.add(new HikerActivityDTO(new Date(1417170800000L), "Montréal", "Alloha", "dsdsd", 12, 2332)); 
     return l; 
    } 
} 

我想我呼吁放错了地方的MBean的方法getHikerActivities,因为它甚至不System.out中。 我在做什么错?

回答

0

1: 使用f:selectItems代替f:selectItem

2: 表格错过像value="hikerPresenter.hikers"值属性

3: 您必须设置的h:selectOneMenu value属性设置hikerId放入bean中,所以它不需要将它作为参数传送给方法getHikerActivities

+0

我最好不要在我的MBean中设置属性。我该如何将hikerI从selectItem传递给数据表,然后用id调用MBean方法来获得结果 – Benoit 2014-12-04 06:05:30

+1

无法通过这种方式发送hikerI ..您必须将列表中选定的值设置为bean并使用它。 – Fadi 2014-12-04 10:50:06