[英]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.