2012-09-04 237 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的值。

相关问题