2013-05-18 126 views
-1

我在這個論壇上搜索,但沒有得到適當的解決方案。如果錯誤地這個重複,那麼對不起。從Jsp訪問bean

來到問題...... 我從我的HTML的一個servlet的使用這樣的 代碼的index.html

<FORM METHOD="POST" ACTION="user"> 
What's your name? <INPUT TYPE="TEXT" NAME="username" SIZE=20>` 

代碼的servlet

​​

都設定值servlet和bean放在名爲test的包中。爲的UserBean

代碼:

private String firstName; 

public String getFirstName() { 
    return firstName; 
} 

public void setFirstName(String firstName) { 
    this.firstName = firstName; 
    System.out.println(firstName); 
} 

從豆我能夠打印正確的值名稱服務器控制檯上。 從servlet的我試圖從JSP acceess豆值設定值後稱爲getJsp.jsp

getJsp.jsp

<table> 
    <jsp:useBean id="user" type="test.UserBean" class="test.UserBean" scope="request" > 
    <tr> 
     <td> Id : </td> 
     <td> <jsp:getProperty name="user" property="firstName"/></td> 
    </tr> 
    </jsp:useBean> 
</table> 

當訪問從JSP bean的屬性,我發現了以下錯誤:

org.apache.jasper.JasperException: /getJsp.jsp (line: 10, column: 1) The value for the useBean class attribute UserBean is invalid.

我無法理解此錯誤的代碼中的問題。 請幫我。

謝謝。

+0

@JB謝謝你的幫助。我也已經試過了。剛纔我嘗試了兩種方法在netbeans中使用相同的示例,但是我得到「null」或根本沒有發現一個新問題(或者至少編輯現有的問題),但沒有發現任何問題 –

+0

-1與原始版本無關。 –

+0

@RaviThapliyal我更新了你的答案下的所有評論,如果你已經檢查過它。無論如何感謝讓我知道我必須更新問題而不是評論。 –

回答

4

鑑於錯誤消息,它看起來像JSP的實際代碼使用class="UserBean"而不是class="test.UserBean"

但更重要的是,搜索答案時什麼都沒有找到的原因是您要實現JSP,就好像JSP區域中超過10年沒有任何變化。 jsp:useBean和其他jsp:xxx標籤已完全過時。瞭解如何使用JSP EL和JSTL的,並替換JSP的代碼通過

<table> 
    <tr> 
     <td> Id : </td> 
     <td><c:out value="${user.firstName}"/></td> 
    </tr> 
</table> 

這將對用戶名逃逸的HTML特殊字符的額外優勢。

+0

感謝您的幫助。我也已經試過了。剛纔我嘗試了兩種方法在NetBeans中的相同示例,但是我得到「null」或什麼也沒有。 AA和我通過記事本粘貼相同的代碼,並手動運行應用程序通過TOmcat,這次我得到了錯誤說:javax.el.PropertyNotFoundException:屬性'firstName'在類型test.UserBean上不可讀。 –

+0

我按照你使用netbeans所告知的那樣,這個值沒有被輸出。 同時,我嘗試了與Netbeans相同的事情,這次我得到了與之前的評論相同的錯誤: javax.el.PropertyNotFoundException:屬性'firstName'在類型測試中不可讀。UserBean –

+0

你確定你的getter是公開的嗎?你確定它拼寫了getFirstName()嗎?你確定這個類是很好的編譯,並在WEB-INF/classes下出現嗎? –