2014-10-11 108 views
0

我想使用<jsp:setProperty>设置bean中的属性并使用param分配值。 下面是代码:如何使用bean中的setproperty和param设置属性

create.jsp

<form id="form1" name="form1" action="save.jsp" method="POST" 
enctype="multipart/form-data"> 
<input required="" type="text" name="nam"> 

save.jsp

<jsp:useBean class="jbeans.account.BankAccount" scope="request" id="ac1"> 
</jsp:useBean> 
    <jsp:setProperty name="ac1" property="accountHolderName" param = "nam"> 
</jsp:setProperty> 
<% 
     ac1.createAccount(request); //createAccount is a public method. 
            //Recieving value of nam always as null 
%> 

jbeans.account.BankAccount.java

public void setAccountHolderName(String accountHolderName) { 
    this.accountHolderName = accountHolderName; 
} 

当我输入nam文本框中的值时,我收到的accountHolderName的值始终为null。如何获得正确的价值?

+0

你会为'accountHolderName'写getter和setter吗? – 2014-10-11 07:56:20

回答

0

问题是,你明确地把enctype="multipart/form-data"放在你的表单定义中。这不是默认设置,并允许将文件上传到服务器。

不幸的是,它不能用于简单的JSP参数解码。

如果您不需要上传文件,只写

<form id="form1" name="form1" action="save.jsp" method="POST"> 
<input required="" type="text" name="nam"> 
... 

get.jsp,一切都应该去罚款。如果你真的需要上传的文件,你需要在一个servlet参数进行解码,但是这将是相当另一个问题...

编辑:如何在Servlet中

对于剩余的答案得到多,我假设您至少使用servlet 3.0 API和兼容容器(至少Tomcat 7)

要解码multipart/form-data,您必须声明带有multipart-config元素或注释的servlet,并将其用作操作的形式(说它的网址是"/saver")。

<form id="form1" name="form1" action="${pageContext.request.contextPath}/saver" 
    method="POST" enctype="multipart/form-data"> 
<input required="" type="text" name="nam"> 
<input type="file" name="file"> 
... 

你声明的方式(使用注释)在servlet:

@WebServlet(name="saveServlet", urlPatterns="/saver") 
@MultipartConfig 
public class SaveServlet extends HttpServlet { 

    @Override 
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
     // get an use the file part 
     Part part = req.getPart("file"); 
     // ... 
     req.getRequestDispatcher("/save.jsp").forward(req, resp); 
    } 
} 

注意该servlet转发到你原来的JSP文件,现在可以找到的请求参数,因为它是从解码多部分由servlet组成。但恕我直言,你最好在servlet中进行所有处理(调用ac1.createAccount(request);),并使用JSP做结果显示。

+0

我需要在调用jsp后上传文件以及字段。如何检索字段值? – 2014-10-11 16:12:28

+0

@ M.S。 :发布编辑 – 2014-10-11 17:39:19