在数据表上呈现的JSF submitButton

时间:2014-12-04 05:09:15

标签: ajax jsf java-ee jsf-2 datatable

这是我的JSF(2.2)页面:

<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>

我希望通过单击命令按钮,我可以使用所选项目中的hikerId调用我的MBean方法,并在数据表上进行渲染。

这是我的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。 我做错了什么?

1 个答案:

答案 0 :(得分:0)

<强> 1 使用f:selectItems代替f:selectItem

<强> 2 您的表格错过了value="hikerPresenter.hikers"

等值属性

第3: 您必须设置h:selectOneMenu的value属性以将hikerId设置到bean中,因此不必将其作为参数发送到方法getHikerActivities