2014-10-11 109 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