获取请求参数时出现空指针异常

时间:2011-04-05 10:43:36

标签: jsf

<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”,从而导致空指针异常。 任何解决这个问题的想法???

3 个答案:

答案 0 :(得分:1)

我已经解决了我的问题。 我犯的错误是我试图在页面加载本身传递参数,尝试将param值设为value =“#{stuList.stuNumber}”并解决了错误。

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

感谢所有专业人士的时间。

答案 1 :(得分:0)

您正在混合POST和GET请求。 h:form和h:commandbutton用于POST请求。 f:param用于GET请求。如果您想要GET请求,请使用h:button或h:link

要快速了解GET支持外观here,它还解释了如何将参数绑定到bean而无需转到请求参数映射。

答案 2 :(得分:0)

我认为f:param仅适用于h:commandLinkh:outputLink,但不适用于h:commandButton