簡體   English   中英

如何將表單的值從jsp發送到Java

[英]How to send values of a form from jsp to java

我有一個包含30個不同字段的表格。 將它們全部傳遞給控制器​​時,需要為每個屬性都具有一個屬性,以及一對getter,setter。

我將使表單字段作為一個對象並將該對象發送到控制器。

我正在使用以下代碼*, 但有人建議從jsp調用java方法並改為使用JSTL是一種不好的做法,但不知道如何使用JSTL來實現它。 還有其他方法嗎? *

我的JSP

 <s:form>
 code to implement form goes here
 </s:form> 

<jsp:useBean id="obj" class="com.User"/>

    <jsp:setProperty property="*" name="obj"/>

      <%
         String myoutput = myController.Xclass(obj);
         out.print(myoutput);
         if(myController.Xclass(obj).equals("output"))
            {
               out.print("The form is successfully submitted.");
            }
      %>

控制器

  public String Xclass(User obj){
           return "output";
        }

以下是澄清我的類圖的方法:

User Class {
 all the attributes and getters setters
}

myController class extends User {

    public String XClass(User obj){
       ... work on the inputes ...
      return "output";
    }
}

如果問題是動作屬性的數量,請手動公開POJO或使用ModelDriven

手動執行很簡單,例如:

public class UserController {
    private User user; // Plus public getter and setter
}

然后,在JSP中,您可以按名稱引用User屬性:

<s:form ...>
  <s:textfield key="user.firstName"/>
  ...

ModelDriven理論上講,使用ModelDriven更容易,因為它可以自動放置在堆棧中。 確保僅在需要時才實例化新模型,但基本上(從內存中)實例化是很棘手的:

public class UserController implements ModelDriven<User> {
    private User user;
    public User getModel() { return user; }
}

由於將User壓入堆棧,因此直接在JSP中使用User屬性:

<s:form ...>
  <s:textfield key="firstName"/>
  ...

同樣,在提交表單時,會創建一個模型並將其用作方法的第一個目標。

請記住,您永遠不會將對象發送到Java端:您總是並且僅發送字符串(通過常規HTTP表單提交)。 服務器端可能會有魔術將這些字符串轉換為對象,但這僅僅是魔術。 魔術和希望。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM