当我将 Autowiring 拦截器(interceptor-ref name="autowiring") 放在 spring.xml 中的操作标记中时,index.jsp 中的 struts 标记无法与该操作类的 setter 进行映射。当我从操作标签中删除 Autowiring 标签时,在这种情况下,jsp 的 struts 标签确实能够与操作类的 setter 进行映射。
我们非常欢迎您提供任何帮助。如果您需要任何类型的示例,请告诉我。
<s:textfield name="name" label="Name" />
<s:textfield name="salary" label="Salary" />
<s:submit value="Add Record" />
那么这个名为“name”和“salary”的struts标签不会设置用相同名称的setter/getter表示的action类中的值。
public void setName(String name) {
this.name = name;
}
public void setSalary(String salary) {
this.salary = salary;
}
最佳答案
如果您在操作上定义拦截器,则必须在操作上定义所有拦截器。如果未设置参数,则“ Autowiring ”拦截器引用不包含“参数”堆栈,该拦截器负责将表单属性传输到操作。
Umesh 是正确的,如果您使用 Spring,该插件会为您处理注入(inject),并且您不需要在操作上手动定义“ Autowiring ”插件。如果您只是删除该拦截器定义,您的参数应该正常设置,并且操作仍然应该连接。
也就是说,在操作中手动使用 session 工厂不会被视为最佳实践。任何 session 工厂逻辑都应该包含在您的 DAO/服务/等中。操作应该很少(阅读:从不)意识到持久层。
关于spring - 当使用 spring Autowiring 时,struts 标签不会与操作类映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11538128/