我是Struts2和Hibernate的新手。我想从表单中保存值。 提交时,textarea的值将保存为null;
我的表格是这样的 -
<s:form action="saveComment">
<s:push value="ai">
<s:hidden name="id"/>
<table cellpadding="5px">
<tr><td><s:textarea name="description" rows="5" cols="60" theme="simple" />
</td>
<td> <s:submit type="image" src="images/sbt.gif" >
</s:submit>
</td></tr>
</table>
</s:push>
</s:form>
我的行动方法是这样的 -
public String saveComment() throws Exception {
Map session = ActionContext.getContext().getSession();
ExternalUser user = (ExternalUser) session.get("user");
AIComment aiComment = new AIComment();
aiComment.setAi(ai);
aiComment.setPostedOn(new java.util.Date());
aiComment.setPostedBy(user);
aiCommentDao.saveAIComment(aiComment);
return SUCCESS;
}
答案 0 :(得分:0)
Struts2具有内置机制,可以将表单值传输到您尊重的Action类,只需执行以下步骤即可。
Struts2会将这些动作属性名称与从表单发送的字段名称相匹配,并为您填充它们
在你的情况下你只需要做以下
public class YourAction extends ActionSupport{
private String id;
private String description
getter and setters for id and description fileds
public String saveComment() throws Exception {
//Your Method logic goes here
}
}
因此,当您提交表单时,它将包含id和description作为表单值.Struts2拦截器(在本例中为param)将看到您的action类具有这些属性,并将在saveComment()
方法获得之前填充它们执行。
希望这会给你一些理解。
简而言之,所有这些繁重的工作数据传输/类型转换都是由幕后的拦截器完成的。
阅读拦截器细节以便更好地理解
答案 1 :(得分:0)
首先,您的操作名称必须是别名的名称。然后你应该指定方法名称。
当然你应该在struts.xml中定义动作和方法
<action name="Comment_*" method="{1}" class="com.yourproject.folder.Comment">
<result name="input">/pages/page.jsp</result>
<result name="success" type="redirectAction">nextAction</result>
</action>
所以你可以写
<s:form action="Comment_saveComment">
在你的课堂上
public class Comment extends ActionSupport {
public String saveComment() throws Exception {
Map session = ActionContext.getContext().getSession();
ExternalUser user = (ExternalUser) session.get("user");
AIComment aiComment = new AIComment();
aiComment.setAi(ai);
aiComment.setPostedOn(new java.util.Date());
aiComment.setPostedBy(user);
aiCommentDao.saveAIComment(aiComment);
return SUCCESS;
}
}
我不知道你是如何获得“ai”和“user”的价值观的。如果要从FORM获取值,则必须声明与表单输入名称相同的字符串。在您的情况下,“id”,“description”是输入值。如果您想从FORM获取值,您应该在类中声明这些变量的getter和setter。
在您的情况下,对于“id”
private String Id;
private String Description;
public String getId() {
return Id;
}
public void setId(String Id) {
this.Id = Id;
}
...