当前位置:编程学习 > JAVA >>

jsp页面传值对象为空,求解?

​public void save(Role role, int[] privilegeIds)插入的角色和权限的一个hashset方法,

Role的映射表

    private int id;
    private String name;
    private Set<Admin> admin_Infos;
    private Set<Privilege> privileges;

action中

    private int[] privilegeIds;
    private List<Privilege> privilegeList;    
    private List<Role> roles;
    private Role role;
    private RoleService roleService;

  public String add(){
        privilegeList = privilegeService.findAll();
        System.out.println("又执行了");
        if(role==null){
            System.out.println("是空的");
            return "add";

}     
        roleService.save(role, privilegeIds);
        return "add";
    }

role_add.jsp中关键部分

<div class="text_info clearfix"><span>角色名称:</span></div>
                <div class="input_info">
                    <input type="text" class="width200" name="name" />
                    <span class="required">*</span>
                    <div class="validate_msg_medium">不能为空,且为20长度的字母、数字和汉字的组合</div>
                </div>                    
                <div class="text_info clearfix"><span>设置权限:</span></div>
                <div class="input_info_high">
                    <div class="input_info_scroll">
                        <s:checkboxlist  name="privilegeIds"
                             list="privilegeList"
                             listKey="id"
                             listValue="name">
                        </s:checkboxlist>

每次提交role_add.jsp传值,都是role一直是空的,也就没法执行save方法,不知道哪里错了,谢谢了 --------------------编程问答-------------------- 表单定义的属性名称与后台封装不匹配导致的。
<input type="text" class="width200" name="name" /> 换成
<input type="text" class="width200" name="role.name" />等等 --------------------编程问答-------------------- 1,你jsp页面的值是放在form里面提交的?
2,配置文件呢?路径是否正确,类找到了没?
3,前台与后台对应的属性名称是否一致?
4,你getter方法呢?
5,action有没有写正确! --------------------编程问答--------------------
引用 1 楼 ch656409110 的回复:
表单定义的属性名称与后台封装不匹配导致的。
<input type="text" class="width200" name="name" /> 换成
<input type="text" class="width200" name="role.name" />等等

对头 还要给role对象添加get set方法
--------------------编程问答-------------------- Role的映射表 只有set方法没有get方法 --------------------编程问答-------------------- <input type="text" name="对象.属性" />
比如你的action中声明了Role role;同时记得加上get/set方法
其中Role对象中含有name字段。
那么你就可以使用
<input type="text" name="role.name" />
你js中写的name=“name”,这样的话,你actino中必须定义一个String name来接收。
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,