2013-04-21 118 views
3

對於Java和JSTL,我真的很陌生,所以很抱歉,如果這是一個超級簡單的問題。我試圖通過一個我在網上找到的例子來讓它起作用,但我似乎遇到了問題。假設發生的是你創建一個java bean並從java bean中訪問屬性。但相反,我得到一個空指針異常就行了,我打電話在JSTL的類jsp:useBean id =「students」 class =「com.beans.Students」。這裏是java類:將Java bean屬性傳遞給JSTL

package com.beans; 

public class Students implements java.io.Serializable 
{ 
    private String firstName = null; 
    private int age = 0; 

    public Students() { 
    } 
    public String getFirstName(){ 
     return firstName; 
    } 
    public int getAge(){ 
     return age; 
    } 
    public void setFirstName(String firstName){ 
     this.firstName = firstName; 
    } 
    public void setAge(Integer age){ 
     this.age = age; 
    } 
} 

JSTL中,我試圖訪問的Java bean:

<jsp:useBean id="students" 
       class="com.beans.Students"> 
<jsp:setProperty name="students" property="firstName" 
       value="Zara"/> 
<jsp:setProperty name="students" property="age" 
       value="10"/> 
</jsp:useBean> 

<p>Student First Name: 
<jsp:getProperty name="students" property="firstName"/> 
</p> 

<p>Student Age: 
<jsp:getProperty name="students" property="age"/> 
</p> 

堆棧跟蹤:

Caused by: org.apache.sling.api.SlingException: An exception occurred processing JSP page /students.jsp at line 18 
at org.apache.sling.scripting.jsp.jasper.servlet.JspServletWrapper.handleJspExceptionInternal(JspServletWrapper.java:574) 
at org.apache.sling.scripting.jsp.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:499) 
at org.apache.sling.scripting.jsp.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443) 
at org.apache.sling.scripting.jsp.JspServletWrapperAdapter.service(JspServletWrapperAdapter.java:59) 
at org.apache.sling.scripting.jsp.JspScriptEngineFactory$JspScriptEngine.eval(JspScriptEngineFactory.java:453) 
at org.apache.sling.scripting.core.impl.DefaultSlingScript.call(DefaultSlingScript.java:358) 
... 174 more 
Caused by: java.lang.NullPointerException 
at org.apache.sling.scripting.jsp.jasper.runtime.JspRuntimeLibrary.internalIntrospecthelper(JspRuntimeLibrary.java:322) 
at org.apache.sling.scripting.jsp.jasper.runtime.JspRuntimeLibrary.introspecthelper(JspRuntimeLibrary.java:308) 
at org.apache.jsp.students_002d_jsp._jspServ 

任何幫助,不勝感激!

+0

對不起@Reimeaus我真的很陌生這是什麼意思,通過初始化?基於我的代碼是不是已經被初始化了? – 2013-04-21 17:25:51

+0

請粘貼整個stackTrace(),代碼看起來OK! – NINCOMPOOP 2013-04-21 17:27:40

+0

謝謝@NoobUnChained我粘貼了堆棧跟蹤。 – 2013-04-21 17:33:25

回答

9

如果你已經把一個Students對象的請求,你的servlet做這樣的事情request.setAttribute("students", myStudentObject);,那麼JSTL相當於你有你的網頁上看到的將是這樣:

<p>Student First Name: <c:out value="${students.firstName}"/></p> 

<p>Student Age: <c:out value="${students.age}"/></p> 

確保您包括在您的頁面像這樣的頂級JSTL核心標籤:

<%@ taglib prefix="c" 
     uri="http://java.sun.com/jsp/jstl/core" %> 

使用c:out標籤是好的,如果你需要擔心XSS攻擊,但如果這不是一個問題,你可以直接跳過c:out標籤,並使用像這樣的EL表達式:

<p>Student First Name: ${students.firstName}</p> 

<p>Student Age: ${students.age}</p>