Struts2 - 如何将值绑定回通过 jsp 页面上的 <s:property> 呈现的 POJO
Struts2 - How to bind back the value to POJO which is rendered through <s:property> on jsp page
我正在研究 Struts 2 并在 JSP 到 <s:property>
标签上显示 POJO/bean 属性 值。
但是当我提交回操作时,我没有将这个值绑定到 POJO。
<s:property value="name" />
我正在将可编辑字段(例如:文本字段)的值返回到操作中,但不可编辑的值未绑定回 pojo。
目前我正在使用<s:hidden name="name" />
标签将数据绑定回pojo。
我正在实施 ModelDriven
操作界面 class。
但是还有其他方法可以将不可编辑的值绑定回 pojo 吗?
实际上我在表单中有一个 "List" 个对象,我在 jsp 中对其进行迭代并根据我的要求使用和标记显示值。
当我提交表单时,我正在导航到另一个操作 class(使用相同的表单 bean/pojo),在这里我只获得文本字段的值,而不是那些显示标签。
为了获得这些值,我正在使用标签。
但是有什么方法可以使用 <s:property>
将表单值绑定回 pojo 吗?请建议。
在 Struts2 操作中扩展 class ActionServlet
并创建 POJO 变量。
public SomeAction extends ActionServlet{
private POJO yourPOJOVariable;
//Now create getters and setters because they will bind this to it.
public POJO getYourPOJOVariable() {
return name;
}
//execute method and so on
}
不要忘记在 JSP 中使用 属性 标签中的变量
<s:property value="yourPOJOVariable.classvariable"/>
变量也使用驼峰式大小写。
问题
<s:property />
将生成文本。文本不会发送到服务器,只有表单字段。
解决方案
将隐藏字段与您要发回的每个 <s:property />
结合使用,可以通过 <s:hidden />
标记生成,也可以使用 <input type="hidden" />
:
手动生成
<s:property value="foo" />
<s:hidden name="foo" />
<s:textfield name="bar" />
通过 s:property
标记呈现的值不需要提交给操作,因为这些值永远不会改变。在请求之间,会话范围可用于操作。所以你不会用隐藏字段将它们全部放在 JSP 中。希望您知道如何使用您的操作实现会话映射。将值放入会话,而忘记将它们传递给操作。
我发现有很多范围可供您使用。让我们看看其中的 个。
现在你必须从 this 答案中学习一些关于会话映射的知识。
你终于学会了 how to put values into session map。
可以提取更多与此主题相关的答案,但您可以在我的答案中找到所有答案。
我正在研究 Struts 2 并在 JSP 到 <s:property>
标签上显示 POJO/bean 属性 值。
但是当我提交回操作时,我没有将这个值绑定到 POJO。
<s:property value="name" />
我正在将可编辑字段(例如:文本字段)的值返回到操作中,但不可编辑的值未绑定回 pojo。
目前我正在使用<s:hidden name="name" />
标签将数据绑定回pojo。
我正在实施 ModelDriven
操作界面 class。
但是还有其他方法可以将不可编辑的值绑定回 pojo 吗?
实际上我在表单中有一个 "List" 个对象,我在 jsp 中对其进行迭代并根据我的要求使用和标记显示值。
当我提交表单时,我正在导航到另一个操作 class(使用相同的表单 bean/pojo),在这里我只获得文本字段的值,而不是那些显示标签。
为了获得这些值,我正在使用标签。
但是有什么方法可以使用 <s:property>
将表单值绑定回 pojo 吗?请建议。
在 Struts2 操作中扩展 class ActionServlet
并创建 POJO 变量。
public SomeAction extends ActionServlet{
private POJO yourPOJOVariable;
//Now create getters and setters because they will bind this to it.
public POJO getYourPOJOVariable() {
return name;
}
//execute method and so on
}
不要忘记在 JSP 中使用 属性 标签中的变量
<s:property value="yourPOJOVariable.classvariable"/>
变量也使用驼峰式大小写。
问题
<s:property />
将生成文本。文本不会发送到服务器,只有表单字段。
解决方案
将隐藏字段与您要发回的每个 <s:property />
结合使用,可以通过 <s:hidden />
标记生成,也可以使用 <input type="hidden" />
:
<s:property value="foo" />
<s:hidden name="foo" />
<s:textfield name="bar" />
通过 s:property
标记呈现的值不需要提交给操作,因为这些值永远不会改变。在请求之间,会话范围可用于操作。所以你不会用隐藏字段将它们全部放在 JSP 中。希望您知道如何使用您的操作实现会话映射。将值放入会话,而忘记将它们传递给操作。
我发现有很多范围可供您使用。让我们看看其中的
现在你必须从 this 答案中学习一些关于会话映射的知识。
你终于学会了 how to put values into session map。
可以提取更多与此主题相关的答案,但您可以在我的答案中找到所有答案。