2

当我将自动装配拦截器(interceptor-ref name="autowiring")放入 spring.xml 中的操作标记时,index.jsp 中的 struts 标记无法与该操作类的设置器映射。当我从动作标签中删除该自动装配标签时,在这种情况下,jsp的struts标签确实能够与动作类的设置器映射。

您的任何帮助都将受到欢迎。如果您需要任何示例,请告诉我。

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

那么这个名为'name'和'salary'的struts标签不会在动作类中设置值,用相同的setter/getter名称表示。

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

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

1 回答 1

2

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

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

也就是说——在操作中手动使用会话工厂不会被认为是最佳实践。任何会话工厂逻辑都应该包含在您的 DAO/服务/等中。操作应该很少(阅读:从不)知道持久层。

于 2012-07-18T12:58:53.120 回答