2012-09-04 433 views
0

我發現了很多解決方案,但沒有一個適合我。從jsp傳遞一個java bean到servlet

這是在JSP

<jsp:useBean id="customer" class="com.objects.Customer" scope="request" /> 
<form action="proceed" method="post"> 
    <% customer.setEmail("abc");%> 
    <input type="submit" value="Proceed" /> 
</form> 

豆這是servlet

Customer customer = (Customer)request.getAttribute("customer"); 
System.out.println(customer.getEmail()); 

那麼它只是熱潮,客戶對象爲null。我試圖改變會議和getsession,但仍然沒有工作。

任何人都可以指出我的錯誤。謝謝

+0

您在哪個servlet的方法中編寫了這段代碼? – Miguel

+1

@Miguel:在'doPost()'中。 OP顯然希望表單提交神奇地使用與表單顯示時相同的HTTP請求實例,並且所有屬性仍然存在。 – BalusC

回答

1

請求屬性不這樣工作。客戶bean在request對象上實例化,該對象對應於先前的請求:顯示錶單的那個對象。當您將表單提交給servlet時,您放置customer對象的請求早已消失。

但它應該與<jsp:useBean id="customer" class="com.objects.Customer" scope="session" />session.getAttribute("customer")一起工作,因爲假設您在瀏覽器中啓用了Cookie,session對象跨越多個請求。如果它不起作用,那麼您的代碼中不會顯示其他問題。

還有一條建議:使用標準的<jsp:setProperty name="customer" property="email" value="abc" />來設置bean的值。

相關問題