为什么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分! 展开
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分! 展开
7个回答
展开全部
你的FormBean里的set和get方法不对。
属性是classid
get 方法应该是getClassid()
set 方法应该是setClassid()
其他的也一样,属性和方法对不上。所以得不到值。 set和get方法把属性的首字母大写就可以了,其他位置不变。
属性是classid
get 方法应该是getClassid()
set 方法应该是setClassid()
其他的也一样,属性和方法对不上。所以得不到值。 set和get方法把属性的首字母大写就可以了,其他位置不变。
追问
还是打印出来0啊~~呜呜
追答
打印里的方法也对应改了吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我对strust1不是很熟,不过给你提点建议:
1、建议将select 改成用struts的标签如:html:select
2、可以hidden一个字段,来记录select的那个ID,把那个hidden的值传入后台
3、在select里写个事件,当change里面的值时,把hidden字段的值替换成选择的那个。
1、建议将select 改成用struts的标签如:html:select
2、可以hidden一个字段,来记录select的那个ID,把那个hidden的值传入后台
3、在select里写个事件,当change里面的值时,把hidden字段的值替换成选择的那个。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你在action中有的System.out.println(searchacademicform.getStartYear());打印出来有没有数值呀?有的话你就直接setAtrrube就可以了,然后在页面getAtrrbute就可以了把你的数值放入session中就可以在页面上取你想要的数值了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
呵呵,你可以直接用request 对象获取参数试试看,才知道你的问题在哪里
追问
在哪里request?
追答
在你的Action 中用request.getParameter() 这样获取参数,不要用自动表单赋值,试试看是否有能得到
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询