Struts2 Struts 2将表单提交给一个对象
我有类似的想法:Struts2 Struts 2将表单提交给一个对象,struts2,struts2-spring-plugin,Struts2,Struts2 Spring Plugin,我有类似的想法: class Model { private String field1; private String field2; //setters } class Action extends ActionSupport { private Model model; public String execute() { //breakpoint } public void setModel(Model mod
class Model {
private String field1;
private String field2;
//setters
}
class Action extends ActionSupport {
private Model model;
public String execute() {
//breakpoint
}
public void setModel(Model model){
this.model=model;
}
}
在jsp上:
<s:form id="addCommentForm" method="POST" namespace="%{namespace}" action="addComment">
<input type="text" name="model.field1"/>
<input type="text" name="model.field2"/>
</s:form>
不幸的是,当我提交此表单时,模型类中只设置了1个字段。
我调试了代码,发现实际上两个字段(field1和field2)都调用了setter,但模型类的实例不同
因此,在提交表单时,它将执行以下步骤:
<dependency>
<groupId>com.vercer.engine.persist</groupId>
<artifactId>twig-persist</artifactId>
<version>1.0.4</version>
</dependency>
<dependency>
<groupId>com.opensymphony</groupId>
<artifactId>xwork</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.struts.xwork</groupId>
<artifactId>xwork-core</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.19</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>opensymphony</groupId>
<artifactId>sitemesh</artifactId>
<version>2.4.2</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.1.6</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>jetty</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1-6.0.2</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>2.1.6</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-json-plugin</artifactId>
<version>2.1.8</version>
</dependency>
com.vercer.engine.persist
小枝坚持
1.0.4
com.opensymphony
xwork
2.1.2
org.apache.struts.xwork
X工作核心
2.2.1
org.freemarker
自由标记
2.3.19
org.springframework
弹簧网
3.1.1.1发布
开放交响乐团
网站
2.4.2
org.apache.struts
struts2型芯
2.1.6
log4j
log4j
1.2.16
码头
jsp api
2.1-6.0.2
org.apache.struts
struts2弹簧插件
2.1.6
org.apache.struts
struts2 json插件
2.1.8
对于复杂类型,您需要一个getter和setter,以便Struts2能够正确地操作对象,否则它将无法获取现有实例,并将被迫创建一个新的模型实例(new Model().setwhater()),而不是看到一个模型已经存在并正在执行(getModel().setwhater()).配置中有什么有趣的地方吗?插件?拦截器堆栈?正确的依赖项?我添加了依赖项列表。我还使用了SpringStruts集成,每个action类都有@Scope(value=“prototype”)注释,因为这些action是在spring中创建的,您在那里混合了一堆S2和XW2依赖项;首先修复依赖项,使其有意义——您不能随意混合和匹配版本。JSP API应该列为“提供的”。我将JSP API依赖项标记为“提供的”。还有什么吗?是的,我说的关于混合依赖版本的其他话。@Deplake,但仍然修复依赖项--这是自找麻烦。如果这解决了问题,请用绿色复选标记此答案(在左侧的“0”下)。