Номер данных не является обязательным в Spring MVC - PullRequest
0 голосов
/ 01 мая 2019

Во время работы над весенним проектом на основе MVC я пытаюсь привязать данные из JSP к модели.

Хотя строковые данные по какой-то причине отлично связываются, числовые данные вообще не связываются.

Я проверил имя параметра, оно одинаково в POJO и JSP

Ниже код моего контроллера

@RequestMapping(value = "/investor-signup", method = RequestMethod.GET)
    public String registration(Model model) {
        model.addAttribute("investor", new InvestorRegister());
        return "investor-signup";
    }

    @RequestMapping(value = "/investor-signup", method = RequestMethod.POST)
    public String registration(@ModelAttribute("investor") InvestorRegister investor, BindingResult bindingResult, Model model) {

        System.out.println(investor.getFULL_NAME());
        System.out.println(investor.getMOB_NO());

        investorRegisterService.save(investor);
        return "redirect:/login";
    }

Ниже мой код JSP

<form:form method="post" action="investor-signup"
        modelAttribute="investor" id="contact-form"
        style="padding-top: 40px;" role="form" class="formcss" align="left">    

        <div class="controls">    
            <div class="row">    
                <div class="col-md-12">
                    <div class="form-group">    
                        <div class="col-md-2 ">
                            <label for="user_name">Full Name *</label>
                        </div>
                        <div class="col-md-10 p0">
                            <input id="user_name" type="text" name="FULL_NAME" class="form-control" required="required" data-error="Full Name is required.">
                        </div>
                        <div class="help-block with-errors"></div>
                    </div>
                </div>

                <div class="col-md-12">
                    <div class="form-group">
                        <div class="col-md-2">
                            <label for="user_mobile">Mobile *</label>
                        </div>    
                        <div class="col-md-6 ">
                            <input id="user_mobile" type="number" name="MOB_NO" class="form-control" required="required" data-error="Mobile No is required.">
                        </div>
                        <div class="help-block with-errors"></div>
                    </div>
                </div>              

            <div class="col-md-12" align="center">
                <input type="submit" class="btn btn-success btn-send" value="Register">
            </div>    

        </div>    
    </form:form>

Ниже моя модель POJO

@Entity
@Table(name = "InvestorRegister")
public class InvestorRegister {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_GEN")
    @SequenceGenerator(name = "SEQ_GEN", sequenceName = "IID_SEQ")
    @Column(name = "ID")
    private int ID;

    @NotEmpty
    @Column(name = "FULL_NAME")
    private String FULL_NAME;

    @Column(name = "MOB_NO")
    private int MOB_NO;

    public int getID() {
        return ID;
    }    
    public void setID(int iD) {
        ID = iD;
    }

    public String getFULL_NAME() {
        return FULL_NAME;
    }    
    public void setFULL_NAME(String fULL_NAME) {
        FULL_NAME = fULL_NAME;
    }

    public int getMOB_NO() {
        return MOB_NO;
    }    
    public void setMOB_NO(int mOB_NO) {
        MOB_NO = mOB_NO;
    }
}

Хотя строковые данные по какой-то причине отлично связываются, числовые данные вообще не связываются

Я проверил имя параметра, оно одинаково в POJO и JSP

Любая помощь приветствуется.

Ответы [ 2 ]

2 голосов
/ 01 мая 2019

@ abhi314, Вы только что пробовали, извлекая поле отдельно?Я имею в виду, вы пробовали что-то из этого, просто чтобы проверить, что значение исходит от вида или нет?

public String registration(@RequestParam("FULL_NAME") String FULL_NAME, @RequestParam("MOB_NO") int MOB_NO) {
    //check value comes or not 
}

ИЛИ

public String registration(@RequestBody InvestorRegister  ir) {
    //check value comes or not 
}

Пожалуйста, дайте мне знать, если вы получаете значение или нетпроверка таким образом

1 голос
/ 01 мая 2019

Вам нужно использовать Wrapper Integer вместо int.

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_GEN")
    @SequenceGenerator(name = "SEQ_GEN", sequenceName = "IID_SEQ")
    @Column(name = "ID")
    private Integer ID;

Также я бы предложил использовать стандарты соглашения об именах. Вместо идентификатора объявите идентификатор или наиболее предпочтительный как investorRegisterId.

После изменения с int на Integer, пожалуйста, восстановите геттер / сеттеры для того же.

Ваша настоящая проблема не соответствует концепции автоматической упаковки / распаковки Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...