【问题标题】:How to post boolean variable to server side as a field of a ModelAttribute object?如何将布尔变量作为 ModelAttribute 对象的字段发布到服务器端?
【发布时间】:2015-05-07 17:34:59
【问题描述】:

我有一个基于 Spring 框架的 Web 应用程序,我使用 ModelAttribute 注释将数据作为对象从客户端发布到服务器端。 我有一个包含数据的实体 bean(稍后存储到数据库中)。其中一个字段是布尔字段:

@Entity
@Table(name="PLAYER")
public class Player implements Serializable, JSONAble{
...
@Column(name="IS_HUNGARIAN")
private boolean isHungarian
...
}

我使用 jQuery 通过 AJAX 调用将数据发送到服务器端:

$.ajax({
   type : "POST",
   url : contextPath + 'saveEditedPlayer',
   data: $('#editPlayerForm').serialize(),
   success : function(result) {
       alert('Success');
   },error:function (xhr, ajaxOptions, thrownError){
   }
});

在控制器中我收到这样的数据:

@RequestMapping("/saveEditedPlayer")
@ResponseBody
public String saveEditedPlayer(@ModelAttribute final Player player, @RequestParam(required = false) final String tsiAlso) { 
     final JSONObject result = new JSONObject();
    //some more source code
    return result;
}

Player 对象中的所有字段都被很好地填充,除了布尔字段。根据this 链接,原因是布尔值作为字符串值发布到服务器端,这是真的。我有一个解决方案:我在实体 bean 中有一个字符串字段,我可以将布尔数据存储为字符串值(“true”或“false”),并且在字段的 set 方法中,我可以设置真正的布尔字段值(感谢 Spring,它是自动完成的)。但我认为这不是解决这个问题的正确方法。

有没有办法在没有任何帮助变量的情况下发布我的布尔变量? 感谢您提前提供任何帮助,如果您需要更多信息,请询问我。

【问题讨论】:

    标签: java jquery ajax spring


    【解决方案1】:

    你需要这样命名你的东西:

    Player.java:

    ...
    private boolean hungarian;
    
    public boolean isHungarian() {...}
    
    public void setHungarian(boolean hungarian) {...}
    ...
    

    那么你的请求变量就是hungarian

    【讨论】:

      猜你喜欢
      • 2011-04-08
      • 1970-01-01
      • 2018-12-08
      • 1970-01-01
      • 2013-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多