为什么struts中jsp页面表单中的值不能传到action中? 20

代码如下:academic.jsp页面表单:<formid="myForm"name="myForm"action="searchacademic.do"method="... 代码如下:
academic.jsp页面表单:
<form id="myForm" name="myForm" action="searchacademic.do" method="post" enctype="multipart/form-data">
<ul>
<li style="margin-top: 3px;">
信息查看:
...
<select id="classid" name="classid" >
<option value="1">论文</option>
<option value="2">著作</option>
<option value="4">产权</option>
<option value="3">项目</option>
</select>
</li>
<li style="margin-top: 3px;">
年限
</li>
<li>
<select id="startyear" name="startyear"><script>yf();</script></select>
</li>
<li style="margin-right: 18px;">
<select id="endyear" name="endyear"><script>yf();</script></select>
</li>
<li style="margin-right: 18px;">
<input class="buttonstyle" type="submit"
value="搜索"/>
</li>
</ul>
</form>

SearchAcademicForm.java:
package academic;
import java.io.UnsupportedEncodingException...;
public class SearchAcademicForm extends ActionForm {
private int classid;
private int startyear;
private int endyear;
@Override
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
try {
request.setCharacterEncoding("gb2312");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public int getClassId() {
return classid;
}
public void setClassId(int classid) {
this.classid = classid;
}
public int getStartYear() {
return startyear;
}
public void setStartYear(int startyear) {
this.startyear = startyear;
}
public int getEndYear() {
return endyear;
}
public void setEndYear(int endyear) {
this.endyear = endyear;
}
}

SearchAcademicAction.java:
package academic;
import java.util.ArrayList...;
public class SearchAcademicAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {
SearchAcademicForm searchacademicform =(SearchAcademicForm) form
System.out.println(searchacademicform.getStartYear());
System.out.println(searchacademicform.getClassId());
...
return mapping.findForward("yes");}

struts-config.xml:
<struts-config>
<data-sources />
<form-beans >
<form-bean name="searchacademic" type="academic.SearchAcademicForm" />
</form-beans>
<action-mappings >
<action
attribute="searchacademic"
input="/academic.jsp"
name="searchacademic"
path="/searchacademic"
scope="request"
type="academic.SearchAcademicAction">
<forward name="yes" path="/academictest.jsp" />
</action>
</action-mappings>
</struts-config>
页面也跳转到了academictest.jsp,但console打印出来的却都是0,不知道actionform有没有取值成功?希望高手解答!20分!
展开
 我来答
百度网友95cd8cb
2011-04-22 · TA获得超过109个赞
知道答主
回答量:105
采纳率:0%
帮助的人:88.9万
展开全部
你页面中的name属性的值应该用actionform表单中定义的对象名.属性名来表示,因为在客户端发送请求时actionform表单根据name属性来填充表单的值。
你在ActionForm中定义对象,如:Objectname obj = new Objectname();页面的name属性写成obj.classId,这样就能获得到值了,但是注意Objectname 这个对象名一定包括classId这个属性,如果不明白可以在问我。
m瀚霖
2011-04-20 · TA获得超过473个赞
知道小有建树答主
回答量:244
采纳率:0%
帮助的人:189万
展开全部
你的FormBean里的set和get方法不对。
属性是classid
get 方法应该是getClassid()
set 方法应该是setClassid()
其他的也一样,属性和方法对不上。所以得不到值。 set和get方法把属性的首字母大写就可以了,其他位置不变。
追问
还是打印出来0啊~~呜呜
追答
打印里的方法也对应改了吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
霜_河
2011-04-20 · TA获得超过479个赞
知道小有建树答主
回答量:277
采纳率:0%
帮助的人:211万
展开全部
我对strust1不是很熟,不过给你提点建议:
1、建议将select 改成用struts的标签如:html:select
2、可以hidden一个字段,来记录select的那个ID,把那个hidden的值传入后台
3、在select里写个事件,当change里面的值时,把hidden字段的值替换成选择的那个。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
年轻人WJS
2011-04-20
知道答主
回答量:53
采纳率:0%
帮助的人:0
展开全部
你在action中有的System.out.println(searchacademicform.getStartYear());打印出来有没有数值呀?有的话你就直接setAtrrube就可以了,然后在页面getAtrrbute就可以了把你的数值放入session中就可以在页面上取你想要的数值了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
飞花岁月2007
2011-04-20 · TA获得超过377个赞
知道小有建树答主
回答量:505
采纳率:78%
帮助的人:333万
展开全部
呵呵,你可以直接用request 对象获取参数试试看,才知道你的问题在哪里
追问
在哪里request?
追答
在你的Action 中用request.getParameter()  这样获取参数,不要用自动表单赋值,试试看是否有能得到
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式