标签: spring-form

保持spring mvc的model属性值

当我使用Spring MVC控制器并通过设置值来提交表单时,modelAttribute我丢失了一些未映射到表单中的模型字段.在此示例中,因为我没有映射年龄和地址,所以这些用户的字段会丢失,因此它们具有null价值.我不想让用户更改他们的年龄和地址,这就是为什么这些字段不在表单中.

方法控制器发布用户编辑表单:

@RequestMapping(value = "/edit", method = RequestMethod.POST)
public String editionUser(Model model, @ModelAttribute("accountForm") User user,
  BindingResult bresult,
  RedirectAttributes redirectAttributes) {
  //user.getAge() and user.getAddress are null           

  //Save the information...
}
Run Code Online (Sandbox Code Playgroud)

获取编辑用户页面的方法控制器:

@RequestMapping(value = "/edit", method = RequestMethod.GET)
public String initEdit(Model model) {
  // the user fields are all filled
  User user = userService.getUserById(...);
  model.addAttribute("accountForm", user);
  return "edition";
}


class User {
  Long id;
  String email;
  String age;
  String address;
  String nickname;

  // ...
}
Run Code Online (Sandbox Code Playgroud)

edition.jsp

<form:form …
Run Code Online (Sandbox Code Playgroud)

forms spring controller spring-form

15
推荐指数
1
解决办法
2万
查看次数

弹簧形式:输入数字

我正在使用Spring的表单:输入如下:

<form:input type="number" .....>
Run Code Online (Sandbox Code Playgroud)

在我的jsp中,但当我检查在浏览器上呈现的html时,它显示如下:

type="number" type="text"
Run Code Online (Sandbox Code Playgroud)

即,type在html中生成两个属性.

另一方面,如果我在浏览器中使用inspect element选项进行检查,则显示正确 - 仅type="number"按预期方式.
编辑 - 我的问题:为什么我在生成的html(type="number" type="text")中获得两个类型属性?如何解决?

html jsp jsp-tags spring-form

8
推荐指数
1
解决办法
2万
查看次数

Spring 3.0 MVC绑定嵌套对象

为什么spring没有绑定嵌套对象上的值?

尽管在视图中使用bean表示法在表单中进行设置,但RegistrationBean上的SecurityQuestion对象分别设置为问题和答案为null,null.

豆子:

public class SecurityQuestion {
  SecurityQuestionType type;
  String answer;
}

public class RegistrationBean {
  @Valid
  SecurityQuestion securityQuestion;
  String name;


  public SecurityQuestionType[] getSecurityQuestionOptions() {
    return SecurityQuestionType.values();
  }
}
Run Code Online (Sandbox Code Playgroud)

视图:

<form:form modelAttribute="registrationBean" method="POST">
  <form:select id="securityQuestion" path="securityQuestion.question">
    <c:forEach var="securityQuestionOption" items="${securityQuestionOptions}">
      <form:option value="${securityQuestionOption}">${securityQuestionOption</form:option>
    </c:forEach>
  </form:select>

  <form:input id="securityAnswer" path="securityQuestion.answer" />
  <form:input id="name" path="name" />
</form:form>
Run Code Online (Sandbox Code Playgroud)

控制器:

@RequestMapping(value = URL_PATTERN, method = RequestMethod.POST)
public ModelAndView submit(@Valid final RegistrationBean registrationBean) {
  // registrationBean.getSecurityQuestion().getQuestion() == null
  // registrationBean.getSecurityQuestion().getAnswer() == null
}
Run Code Online (Sandbox Code Playgroud)

所有bean都必须拥有所有字段的getter/setter.Spring使用默认构造函数,然后使用setter从视图中改变对象.

java jsp spring-mvc spring-3 spring-form

7
推荐指数
1
解决办法
8838
查看次数

当从jsp组合表单对象时,Spring mvc缺少依赖集合的id

我有以下控制器返回视图:

@RequestMapping(value = "/admin/adminUsers", method = RequestMethod.GET)
    public String adminUsers(ModelMap model, HttpSession session) {
        Set<TerminalAdmin> users = terminalAdminService.getAllAdmins();
        session.setAttribute("users", users);
        model.addAttribute("adminRoles", terminalAdminService.findAllAdminRoles());
        model.addAttribute("terminalAdmin", new TerminalAdmin());
        model.addAttribute("generatedPassword", PasswordUpdateStatus.generatePassword());
        return "admin/adminUsers";
    }

terminalAdminService.findAllAdminRoles()
Run Code Online (Sandbox Code Playgroud)

返回带有id的集合:

在此输入图像描述

在jsp上我渲染它像这样:

<form:form modelAttribute="terminalAdmin" action="/admin/addNewAdmin">
    ...
    <form:checkboxes items="${adminRoles}" path="adminRoles"/>
    ...
</form:form>
Run Code Online (Sandbox Code Playgroud)

我有以下控制器来接受这个对象:

@RequestMapping(value = "/admin/addNewAdmin")
    public String adminUsers(@ModelAttribute @Valid TerminalAdmin terminalAdmin...){
      ....
}
Run Code Online (Sandbox Code Playgroud)

在调试中,我看到terminalAdminadminRoles没有id.

在此输入图像描述

如何解决这个问题?

PS

当我保存实体时,它是Dependent collection重复的继续

java spring-mvc spring-mvc-initbinders spring-form

7
推荐指数
1
解决办法
212
查看次数

JSP错误无法找到标记属性aria的标记属性信息 - 由spring形式描述

我试图添加aria-describeby到springform.它抛出了一个JSP错误.当我尝试在div标签中使用相同的aria-*属性时,它们在同一页面中工作.aria-*不适用于弹簧形式.它在同一个jsp文件中的div中工作.

在此输入图像描述

jquery jquery-ui spring-mvc spring-form

7
推荐指数
1
解决办法
937
查看次数

如何在 Spring MVC 4.3 中设置 FORM 绑定以在控制器中具有继承树的适当子对象

我正在对一个非常旧的应用程序进行更改。这是使用 Spring MVC 4。

我需要在 Spring 控制器的 JSP 中从 form:form 标签中发布数据。UI 是固定的,我只能在服务器端进行更改。基于我提交的表单中的特定字段,我希望在我的 Controller Handler 方法参数中有正确的子对象实例。

例如,

class Payment {...}
class CardPayment extends Payment{...}
class CheckPayment extends Payment{...}
Run Code Online (Sandbox Code Playgroud)

在 UI 表单中,会有一个名为 paymentType 的输入值。付款将是 commandObject 或 ModelAttribute

我希望我的 @PostMapping 控制器在参数中具有正确的子对象。我不想在控制器代码中手动实例化它。

@PostMapping
public ModelAndView doSomePay(@ModelAttribute("payment") Payment paymentInput, BindingResult result){
Run Code Online (Sandbox Code Playgroud)

现在我希望paymentInput上面的这个对象是 CardPayment 或 checkPayment 类型。

我试图创建一个@initBinder and WebDatabinder但实际上我有近 10 个子类,我是否需要为所有这些创建“编辑器”?

如果是,那么短而快速地创建 propertyEditor 的最佳方法是什么

@InitBinder
    public void initBinder(WebDataBinder binder, HttpServletRequest request) {
        String paymentType = request.getParameter("paymentType");

        PropertyEditor productEditor;
       //somehow I can …
Run Code Online (Sandbox Code Playgroud)

spring spring-mvc spring-mvc-initbinders spring-form

7
推荐指数
0
解决办法
127
查看次数

java.lang.IllegalStateException:BindingResult和bean名称'category'的普通目标对象都不可用作请求属性

我在网上查看了几乎所有与此问题相关的答案,但无法在我的代码中找出问题所在.

这是我的JSP页面.

<form:form method="POST" commandName="category" modelAttribute="category" action="search_category">
    <form:input path="category_name" /> 
    <input type="submit" value="Submit">  
</form:form>
Run Code Online (Sandbox Code Playgroud)

当我删除

<form:input path="category_name" /> 
Run Code Online (Sandbox Code Playgroud)

它工作正常.我可以与我的控制器通信.所以问题与这条线有关.

@Controller
public class SearchCategory {

    @Autowired      
    private CategoryService categoryService;

    @RequestMapping(value = "/search_category",  method = RequestMethod.POST)
    public @ResponseBody String searchCategoryFromDatabase(@ModelAttribute("category") Category category, BindingResult result){        

        return "something";
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <!-- Processes application requests -->
    <servlet>
        <servlet-name>appServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/servlet-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>appServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

     <!-- The definition of the Root …
Run Code Online (Sandbox Code Playgroud)

java spring annotations hibernate spring-form

6
推荐指数
1
解决办法
4万
查看次数

如何以spring形式绑定子类对象提交为modelAttribute

我有

Class Shape {
      //Implementation
}
Class Round extends Shape{
      //Implementation
}
Run Code Online (Sandbox Code Playgroud)

控制器我有

@Requestmapping(value="/view/form")
public ModelAndView getForm(){
ModelAndView mav=new ModelAndView();
mav.addObject("shape",new Round());
}


@RequestMapping(value="/submit", method = RequestMethod.POST)    
public ModelAndView submitForm(@ModelAttribute("shape") Shape shape){
         if(shape instanceof Round){ //**Not giving positive result**

         }
    }
Run Code Online (Sandbox Code Playgroud)

在Jsp

<form:form action="/submit" commandName="shape" method="post">

//form tags

</form:form>
Run Code Online (Sandbox Code Playgroud)

当我用Round对象提交表单时.在控制器端,ModelAttribute没有给出Round的实例.它只给出形状的例子.这该怎么做

java spring jsp spring-mvc spring-form

6
推荐指数
1
解决办法
3121
查看次数

Spring 验证:要求可选字段的精确长度

在 Spring MVC 中,我尝试使用注释来执行表单输入的验证。我有一些可选字段,但提供输入时,它必须满足某些条件。例如,我有一个字段可以留空,但是当填写它时,答案必须恰好是五个字符长。

我尝试过类似的事情

@Size(min=5, max=5)
private String value;
Run Code Online (Sandbox Code Playgroud)

但如果用户不填写该字段,则会给用户带来错误。

如何为可选字段提供一些“规则”?

java validation spring spring-mvc spring-form

5
推荐指数
1
解决办法
3万
查看次数

如何在spring <form:form>中保存许多对象

@Component
@Entity
@Table(name="menu")
@Configurable
public class Menu implements Serializable{      
    ....        
    @OneToMany(mappedBy="menu", fetch=FetchType.EAGER)
    private Set<VoceMenu> voceMenuList; 

    public Set<VoceMenu> getVoceMenuList() {
        return voceMenuList;
    }

    public void setVoceMenuList(Set<VoceMenu> voceMenuList) {
        this.voceMenuList = voceMenuList;
    }
    .....   
}
Run Code Online (Sandbox Code Playgroud)

我打印一个表单来编辑菜单,以及它的相对VoceMenu对象,这样:

<form:form action="editMenu" method="post" commandName="menu"> 
     Menu id<form:input path="id" maxlength="11"/><br/>       
     ...... 
    <c:forEach items="${menu.voceMenuList}" varStatus="counter">            
        <form:input path="voceMenuList[${counter.index}].id" maxlength="11"/>
             .....
    </c:forEach>
    <input type="submit">
</form:form>
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试保存对象菜单时,我收到此错误:

bean类[com.springgestioneerrori.model.Menu]的属性'voceMenuList [0]'无效:无法从大小为0的集合获取索引为0的元素,使用属性路径'voceMenuList [0]'访问

java spring jsp jstl spring-form

5
推荐指数
1
解决办法
2029
查看次数