2015-02-06 73 views
0

HI我沒有使用任何MVC ..但我想在我的JSP Servlets應用程序中獲得相同的功能。如何在jsp servlets中使用form bean

我已經有JSP日期,字符串,number..etc的一些文本字段..我創建了一個表單Bean類文本字段的在我的JSP與getter和setter像下面的名字..

JSP(編輯)

<form name="myForm" action="myAction" method="post"> 

     <jsp:useBean id="jspBean" class="com.package.my.BeanClass" scope="request" /> 
     <jsp:setProperty prperty="*" name="jspBean" /> 
    //Below some text fields and date fileds 
    <table> 
     <tr> 
      <td> 
       UserName : 
      </td> 
      <td> 
       <input type="text" value="${myBean.userName}" name="userName"/> 
      </td> 

     </tr> 
      <td> 
       PassWord : 
      </td> 
      <td> 
       <input type="text" value="${myBean.passWord}" name="passWord"/> 
      </td> 

     </tr> 
      <td> 
       Date : 
      </td> 
      <td> 
       <input type="text" value="${myBean.date}" name="date"/> 
      // This text field is with JQUery Date picker 
      </td> 

     </tr> 
     <tr> 
     <td> 
      <input type="submit" value="login" /> 
      </td 
     </tr> 
    </table> 
    </form> 

我的servlet的

// I Can get those text fields as Parameters i.e 

     req.getParameter("userName") 

    //And I cant get that bean Object `jspBean` 
    // I am trying to get that as below 
     sysout(req.getAttribute("jspBean"));//It prints null 

    // So I create a plain bean object and I am setting the data here 
     MyBean bean = new MyBean(); 
     // bean.setUserName(); 
      // I am setting all these fields whaterver needed 
     req.setAttribute("myBean",bean); 

問題

1)我可以將bean對象及其數據從Servlet改爲JSP usinf EL我可以做..我想要的是我希望發送表單數據(所有字段)作爲BeanObject而不是參數..我是不能acheive,

如何做到這一點。請幫助advance./

+0

你必須把你的bean放在一個包中。把你的課放在一個名爲mypackage的文件夾中,然後添加行包mypackage;作爲MyBeanClass.java文件的第一行。還可以在useBean標籤中使用class =「mypackage.MyBeanClass」。最後訪問$ {beanId.field1} – rickz 2015-02-06 17:26:12

+0

@rickz我已經指定了包只包含我的問題是我無法在我的操作類中獲取該對象。 – Babel 2015-02-08 03:17:28

+0

你能夠在JSP中訪問你的bean的字段嗎? – rickz 2015-02-08 04:23:00

回答

0

感謝您可能需要指定的範圍。

<jsp:useBean id="beanId" class="MyBeanClass" scope="request" />

然後在Servlet的:

MyBeanClass counter = (MyBeanClass)request.getAttribute("beanId");

此外,使用${beanId.getField1()}你必須設置表達式語言來真正在你的JSP。使用表達式語言請參閱this link

+0

對不起,在我的問題我已經將範圍設置爲'request'並且嘗試但沒有結果..並且對於EL在我的JSP中正常工作,因爲其他EL在相同的JSP中工作正常.. – Babel 2015-02-06 07:49:29

0

問題是,在你的jsp中沒有綁定你的html表單和java bean。

<input type="text" value="${myBean.userName}" name="userName"/>

因此在servlet中,你沒有得到來自請求屬性的值。用簡單的JSP和servlet,這是不可能完成的。

您可能會使用Spring MVC框架來實現此目的,您可以在其中使用彈簧窗體綁定java bean。或者你可以去struts框架。

如果您仍然想要使用servlet,那麼您可能會使用此方法在您的servlet中使用請求構建java bean。

public MyBean valueOf(HttpServletRequest req) { 
    MyBean bean = new MyBean(); 
    bean.setUserName(req.getParameter("userName")); 
    bean.setPassword(req.getParameter("passWord")); 
    ... 
    return bean; 
} 

P.S.這是一個解決方法,而不是綁定的形式與java bean

+0

我只想使用JSP Servlet。我如何將我的表單域綁定到FormBean對象..?以及我需要哪種方法..? – Babel 2015-02-09 07:30:50