当使用spring autowiring时,struts标签不会映射动作类

时间:2012-07-18 09:20:48

标签: spring struts2

当我在spring.xml中的action标记中放置autowiring interceptor(interceptor-ref name =“autowiring”)时,index.jsp中的struts标记无法映射到该action类的setter。当我从动作标签中删除那个自动装配标签时,那时jsp的struts标签能够映射动作类的setter。

非常欢迎您的任何帮助。如果您需要任何示例,请告诉我。

<s:textfield name="name" label="Name" />
<s:textfield name="salary" label="Salary" />
<s:submit value="Add Record" />

然后这个名为'name'的struts标记和'salary'不会在使用相同名称的setter / getter表示的action类中设置值。

public void setName(String name) {
    this.name = name;
}

public void setSalary(String salary) {
    this.salary = salary;
}

1 个答案:

答案 0 :(得分:2)

如果定义拦截器在某个操作上,您必须在操作上定义所有拦截器。如果你的参数没有被设置,那么“自动装配”拦截器引用不包括“参数”堆栈,负责将表单属性转移到动作的拦截器。

而且Umesh是正确的,如果您使用的是Spring,该插件会为您处理注入,而您无需在操作中手动定义“自动装配”插件。如果你只删除那个拦截器定义,你的参数应该设置为正常,并且仍然应该连接该动作。

那说 - 在动作中手动使用会话工厂不会被视为最佳做法。任何会话工厂逻辑都应该包含在您的DAO / services / etc中。动作应该很少(读:永远)不要知道持久层。