• 【JavaWEB SSH】jsp页面传值后台Controller 部分值绑定不上实体类


    //前端ajax代码

    1
    var oldpassword = $('#old_password').val(); 2 var password = $('#L_pass').val(); 3 var usercode = $('#usercode').val(); 4 var username=$('#username').val(); 5 var user = {usercode:usercode,password:password,oldpassword:oldpassword,username:'admin'}; 6 $.ajax({ 7 url:"/CMS/User/UserEditPWD", 8 type:"post", 9 data:user, 10 11 success:function(res){ 12 if(res=='true'){ 13 layer.alert("修改密码成功", {icon: 6},function () { 14 // 获得frame索引 15 window.parent.location.reload(); 16 var index = parent.layer.getFrameIndex(window.name); 17 //关闭当前frame 18 parent.layer.close(index); 19 }); 20 }else{ 21 layer.msg('修改失败,请注意旧密码是否正确', {icon: 6}); 22 } 23 } 24 }); 25 return false 26 });

    后端model代码 修改后

    package com.supercontrol.cms.model;
    
    import java.util.Date;
    
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.Table;
    import javax.persistence.UniqueConstraint;
    
    import org.hibernate.annotations.GenericGenerator;
    
    import com.supercontrol.cms.controller.annotation.global.Global.LeiMode;
    
    
    @Entity
    @Table(name="CMS_USER")
    public class User {
        
        @Id
        @GeneratedValue(generator = "system-uuid")  
        @GenericGenerator(name = "system-uuid", strategy = "uuid") 
        @LeiMode("ID")
        private String id;
        
        @Column(length=32)
        @LeiMode("用户编号")
        private String usercode;
        
        @Column(length=32)
        @LeiMode("用户名称")
        private String username;
        @LeiMode("旧用户密码")
        private String oldpassword;
        @Column(length=32)
        @LeiMode("用户密码")
        private String password;
        
        @Column(length=32)
        @LeiMode("是否使用")
        private String userUsed;
    
        @Column(length=32)
        @LeiMode("用户部门")
        private String userDepart;
    
        @Column(length=32)
        @LeiMode("用户角色")
        private String userRole;
        
        @Column(length=32)
        @LeiMode("创建人")
        private String userCreater;
        
        @Column(length=32)
        @LeiMode("创建时间")
        private String userCreatetime;
        
        @Column(length=32)
        @LeiMode("更新人")
        private String userUpdater;
        
        @Column(length=32)
        @LeiMode("更新时间")
        private String userUpdatetime;
        @Column(length=32)
    
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        public String getUsercode() { return usercode; }
        public void setUsercode(String usercode) { this.usercode = usercode; }
        public String getUsername() { return username; }
        public void setUsername(String username) { this.username = username; }
        public String getPassword() { return password; }
        public void setPassword(String password) { this.password = password; }
        public String getOldpassword() { return oldpassword; }
        public void setOldpassword(String oldpassword) { this.oldpassword =oldpassword; }
        public String getUserUsed() { return userUsed; }
        public void setUserUsed(String userUsed) { this.userUsed = userUsed; }
        public String getUserRole() { return userRole;}
        public void setUserRole(String userRole) {
            this.userRole = userRole;
        }
        public String getUserCreater() {
            return userCreater;
        }
        public void setUserCreater(String userCreater) {
            this.userCreater = userCreater;
        }
        public String getUserCreatetime() {
            return userCreatetime;
        }
    
        public void setUserCreatetime(String userCreatetime) {
            this.userCreatetime = userCreatetime;
        }
    
        public String getUserUpdater() {
            return userUpdater;
        }
    
        public void setUserUpdater(String userUpdater) {
            this.userUpdater = userUpdater;
        }
    
        public String getUserUpdatetime() {
            return userUpdatetime;
        }
    
        public void setUserUpdatetime(String userUpdatetime) {
            this.userUpdatetime = userUpdatetime;
        }
    
        public String getUserDepart() {
            return userDepart;
        }
    
        public void setUserDepart(String userDepart) {
            this.userDepart = userDepart;
        }
    
    
    }

    修改前

    @Column(length=32)
    @LeiMode("旧用户密码")
    private String oldpassword;
    
    //错误为不符合命名规范,声明参数全小写,方法只能第一个大写,其余不能使用驼峰命名法。
    //getXxx,setXxx
    public String getOldPassWord() { return oldpassword; } public void setOldPassWord(String oldpassword) { this.oldpassword =oldpassword; }

    [转]

    最近的struts项目中遇到了这样的问题: 我的action中全局变量明明有getset方法,而且是自动生成的,但是在使用的时候,总是说找不到这个属性的getset方法,取不到从jsp传来 的值, 原因如下:变量名为:hDeptment,在自动生成getset方法为:setHDeptment,getHDeptment。下面是解释这个问题。

    (1)JavaBean 类必须是一个公共类,并将其访问属性设置为 public  ,如: public class user{......}

    (2)JavaBean 类必须有一个空的构造函数:类中必须有一个不带参数的公用构造器

    (3)一个javaBean类不应有公共实例变量,类变量都为private  ,如: private int id;
    (4)属性应该通过一组存取方法(getXxx 和 setXxx)来访问,一般是IDE(Eclipse、JBuilder) 为属性生成getter/setter 方法

     

     

    一般JavaBean属性以小写字母开头,驼峰命名格式,相应的 getter/setter 方法是 get/set 接上首字母大写的属性名。例如:属性名为userName,其对应的getter/setter 方法是 getUserName/setUserName。

    但是,还有一些特殊情况:

    1、如果属性名的第二个字母大写,那么该属性名直接用作 getter/setter 方法中 get/set 的后部分,就是说大小写不变。例如属性名为uName,方法是getuName/setuName。

    2、如果前两个字母是大写(一般的专有名词和缩略词都会大写),也是属性名直接用作 getter/setter 方法中 get/set 的后部分。例如属性名为URL,方法是getURL/setURL。

    3、如果首字母大写,也是属性名直接用作 getter/setter 方法中 get/set 的后部分。例如属性名为Name,方法是getName/setName,这种是最糟糕的情况,会找不到属性出错,因为默认的属性名是name。

    所以在action的全局变量和JavaBean命名时应该注意符合以上命名规范。

     

    附下表,看看吧:



    ————————————————————————————————————————————————————————

    属性名/类型                    |                       getter 方法              |                    setter 方法  

    ————————————|——————————————————|——————————————————————————
    xcoordinate/Double     | public Double getXcoordinate()     | public void setXcoordinate(Double newValue)

    ————————————|——————————————————|——————————————————————————
    xCoordinate/Double    | public Double getxCoordinate()     |public void setxCoordinate(Double newValue)

    ————————————|——————————————————|——————————————————————————
    XCoordinate/Double    |public Double getXCoordinate()     | public void setXCoordinate(Double newValue)

    ————————————|——————————————————|——————————————————————————
    Xcoordinate/Double     |不允许                                             |    不允许 

    ————————————|——————————————————|——————————————————————————
    分割线 ==========================================================================================

    遇到一个异常:

    javax.servlet.jsp.el.ELException: Unable to find a value for “isActive” in object of class “com.mycompany.domain.User” using operator “.”

    使用“.”运算符,在User类的对象中,找不到isActive的值。

    错误之处是,在JSP页面中我使用了:

              
    1
    ${user.isActive}

    检查后发现没有写属性isActive的getter方法,那好,利用IntelliJ IDEA的自动生成代码功能,补上:

                1
                2
                3
                
    public boolean isActive() {
                return isActive;
                }

    运行,还是不对,问Erik,他说JavaBean命名规范里面规定,对于primitive和自定义类类型的属性property(小 写),getter和setter方法就是getProperty和setProperty(第一个字母变大写,前面再加get或set)。而对于类型为 boolean的属性,getter方法还可以写为isProperty(getProperty仍然可用),而且,如果属性的前两个字母是is(两个小 写),则getter与property完全同名(比如上面属性isActive的getter就是isActive())。

    如果有个叫isIsActive的boolean类型属性,它的getter呢?答案还是isIsActive()。

    所以,无论属性名是isActive还是active,getter只能是isActive()或者getActive(),JSP里只能用${user.active}来访问(注意大小写)。

    最好的办法是不要以“is”作为开头来命名boolean类型的属性,以免混淆。

    分割线====================================================================================

    总之,javaBean中,要设置或获取某个property的值,就需要相应的get和set方法,对于boolean型,你可以用get/set方式来处理boolean,可以用is来代替get;

    再者,一定要注意javaBean中的命名规范!

    如果你连技术都搞不定,怎么去搞定其他更加有挑战性的东西呢?
  • 相关阅读:
    bootstrap
    jQuery快速入门
    前端jQuery
    前端BOM和DOM
    前端js
    前端css
    前端知识之HTML内容
    线程池
    线程
    LightOJ
  • 原文地址:https://www.cnblogs.com/suncos/p/11179424.html
Copyright © 2020-2023  润新知