jsp页面:
<select name="imgType" >
action:
String imgType = String .valueOf(request.getParameter("imgType"));
System.out.println("imgType=="+imgType);
打印出来的:
imgType==null
哪位高手解决下。
我用了隐藏表单域:
<input type="hidden" name="imgType" value="asdf"/>
form:
public class ImgType extends ActionForm{
private String imgType;
//下面省略getter和setter方法
}
action:
ImgType img = (ImgType)form;
System.out.println(img.getImgType());
但是抛空指针异常:
Unhandled Exception thrown: class java.lang.NullPointerException
======================================
我配置了,不知道是什么问题,还是抛空:
<form-beans>
<form-bean name="imgForm" type="com.yitong.app.form.ImgType">
</form-bean>
</form-beans>
<action name="imgForm" parameter="action" path="/biz01/T0106" scope="request"
type="org.springframework.web.struts.DelegatingActionProxy">
<forward name="add" path="/pages/01/06/010601_A.jsp" />
</action>
为什么Action中得不到form表单中的值
答案:4 悬赏:20 手机版
解决时间 2021-03-17 08:11
- 提问者网友:浩歌待明月
- 2021-03-16 09:07
最佳答案
- 五星知识达人网友:佘樂
- 2021-03-16 10:38
不知道你用struts哪个版本。
如果你用struts2的话。只有作为参数传递到action中的才能用request.getParameter取值。
否则你要在action中加全局变量imgType,并且实现这个变量的get和set方法(主要是set方法)。这样就能取到了。struts2会自动把其值通过set方法设置过去。然后你直接使用变量就行了。
struts1的话,要在ActionForm里加入这个变量的,也要实现get set方法
==================
我上面说了,需要在ActionForm里加变量的,这是struts要求的。
表单
<form>
<!-- 这个hidden就是默认一个值,页面不显示,后台可以拿到这个值 -->
<html:hidden property="username" value="1"/>
</form>
一个与之对应的form类
public class UserForm extends ActionForm{
private String username;
//下面省略getter和setter方法
}
在action的方法中
其有参数ActionMapping mapping, ActionForm form
UserForm testForm = (UserForm ) form;
testForm.getUsername(); //这样就可以拿到值。
// 如果不这样做,你只能加到action后的参数里。
======================================
你应该没在struts-config.xml配置
<form-beans>
<!-- 这里加了没 ? -->
<form-bean
name="UserForm"
type="包.UserForm "> 全路径
</form-bean>
</form-beans>
然后action配置,主要加name那点。也可以name="包.UserForm",就不需要写上面的form-bean了
<action path="你原有的" name="UserForm" type="你原有的" 其余不变
如果你用struts2的话。只有作为参数传递到action中的才能用request.getParameter取值。
否则你要在action中加全局变量imgType,并且实现这个变量的get和set方法(主要是set方法)。这样就能取到了。struts2会自动把其值通过set方法设置过去。然后你直接使用变量就行了。
struts1的话,要在ActionForm里加入这个变量的,也要实现get set方法
==================
我上面说了,需要在ActionForm里加变量的,这是struts要求的。
表单
<form>
<!-- 这个hidden就是默认一个值,页面不显示,后台可以拿到这个值 -->
<html:hidden property="username" value="1"/>
</form>
一个与之对应的form类
public class UserForm extends ActionForm{
private String username;
//下面省略getter和setter方法
}
在action的方法中
其有参数ActionMapping mapping, ActionForm form
UserForm testForm = (UserForm ) form;
testForm.getUsername(); //这样就可以拿到值。
// 如果不这样做,你只能加到action后的参数里。
======================================
你应该没在struts-config.xml配置
<form-beans>
<!-- 这里加了没 ? -->
<form-bean
name="UserForm"
type="包.UserForm "> 全路径
</form-bean>
</form-beans>
然后action配置,主要加name那点。也可以name="包.UserForm",就不需要写上面的form-bean了
<action path="你原有的" name="UserForm" type="你原有的" 其余不变
全部回答
- 1楼网友:酒者煙囻
- 2021-03-16 11:37
你页面上的select也没有设置value啊?自然是没有value传输过来的。
- 2楼网友:舊物识亽
- 2021-03-16 11:19
String imgType = String .valueOf(request.getParameter("imgType"));
没必要转型,从页面传过来的值都是String 类型的
String imgType = request.getParameter("imgType");
- 3楼网友:雾月
- 2021-03-16 10:45
按照如下步骤检查一下:
1.<select>表单是要设<option value="">的
2.select 的名字需要和form中的一样。
3.在struts-config.xml中要指定action的属性name和form的对应关系
是否转型要看你的form中定义的select 名字是什么类型的一般,都为String类型
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯