<h:dataTable id="dt1" value="#{StudentMark.stuList}" var="stuList" bgcolor="#9AC8E6" border="10" cellpadding="5" cellspacing="3" rows="18" width="120%" dir="LTR" frame="hsides>
<h:column>
<f:facet name="header">
<h:outputText style=""value="Student Number" />
</f:facet>
<h:outputText style="" value="#{stuList.stuNumber}"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Date"/>
</f:facet>
<h:outputText value="#{stuList.date}">
<f:convertDateTime type="date" pattern="dd-MM-yyyy"/></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Name"/>
</f:facet>
<h:outputText value="#{stuList.stuName}"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Division"/>
</f:facet>
<h:outputText value="#{stuList.division}"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Annual Marks"/>
</f:facet>
<h:outputText value="#{stuList.annualMark}"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Student History"/>
</f:facet>
<h:form>
<h:commandButton id = "historyBtn" value="Student History" action="#{stuBean.showHistory}">
<f:param name="sNumber" value="#{stuBean.stuNumber}" />
<f:param name="sName" value="#{stuBean.stuName}" />
</h:commandButton></h:form>
</h:column>
</h:dataTable>
当我尝试使用
获得传递的参数时 FacesContext context = FacesContext.getCurrentInstance();
Map requestMap = context.getExternalContext().getRequestParameterMap();
String studentNum = (String) requestMap.get("sNumber");
String studentName = (String) requestMap.get("sName");
在studentName和studentNum中显示"null",从而导致空指针异常。有什么办法解决这个问题吗?
我已经解决了我的问题。所犯的错误是我试图在页面加载本身传递参数,试图使参数值为value="#{stuList。
<h:form>
<h:commandLink id = "historyBtn" value="Student History" action="#{stuBean.showHistory}">
<f:param name="sNumber" value="#{stuList.stuNumber}" />
<f:param name="sName" value="#{stuList.stuName}" />
</h:commandLink></h:form>
感谢各位专业人士的宝贵时间。
您混合了POST和GET请求。h:form和h:commandbutton用于POST请求。f:param用于GET请求。如果需要GET请求,请使用h:button或h:link
关于GET支持的快速概述,请查看这里,它还解释了如何将参数绑定到bean,而无需转到请求参数映射。
我认为f:param
只适用于h:commandLink
和h:outputLink
,而不适用于h:commandButton
。