我知道这里有很多类似的问题,但没有一个能解决我的问题.
我正在使用Spring 4.0.3和Hibernate Validator 5.1.0.当我尝试省略标记的path属性时会出现问题<form:errors/>,因此:
<form:errors path="contato.nome" />工程
<form:errors path="*" />工作
<form:errors />不起作用
我不知道为什么会这样.Spring javadocs(org.springframework.web.servlet.tags.form.ErrorsTag)说它应该像这样工作:
仅字段 - 设置字段名称(或路径)的路径
仅对象错误 - 省略路径
所有错误 - 将路径设置为*
你能帮我吗?
感兴趣的代码位于'edicao.jsp'和ContatoController.java的方法'confirmarEdicao'中.对不起,如果我的英语不好.
ContatoController.java
@Controller
@RequestMapping("/contatos")
public class ContatoController {
@Autowired
private ContatoService contatoService;
@Autowired
private MessageSource messageSource;
@RequestMapping(value = "/confirmarEdicao", method = RequestMethod.POST)
public String confirmarEdicao(@Valid Contato contato, BindingResult bindingResult) {
if(bindingResult.hasErrors()) {
return "contatos/edicao";
}
contatoService.save(contato);
return "redirect:/contatos";
}
@RequestMapping(method = RequestMethod.GET)
public ModelAndView form(HttpServletRequest request) {
String …Run Code Online (Sandbox Code Playgroud) 我是Spring MVC的新手,我很难理解究竟是如何工作的 标签.
所以我有以下情况.
进入控制器我有这个方法:
@RequestMapping(value = "/consultazioneMinisteriale", method = RequestMethod.GET)
public String consultazione(Locale locale, Model model) {
List<Twb1012Regione> listaRegioni = geograficaService.getListaRegioni();
System.out.println("Numero regioni: " + listaRegioni.size());
model.addAttribute("listaRegioni", listaRegioni);
return "utenteMinisteriale/consultazione";
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,此方法检索Twb1012Regione对象的List 并将其放入模型对象中,以便可以在consultazione.jsp页面中使用.
所以Twb1012Regione类是这样的模型对象:
@Entity
@Table(name="anagrafiche.TWB1012_REGIONE")
@NamedQuery(name="Twb1012Regione.findAll", query="SELECT t FROM Twb1012Regione t")
public class Twb1012Regione implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="COD_REG")
private String codReg;
@Column(name="DES_REG")
private String desReg;
.....................................
.....................................
OTHER FIELDS
.....................................
.....................................
}
Run Code Online (Sandbox Code Playgroud)
凡codReg …
这可能是一个非常基本的问题,但我很困惑。我有几个疑问:
<form:form如果未指定方法,那么它是 GET 还是 POST?<form:formcommandName 那么是 GET 还是 POST?第二个问题是因为我在代码中看到“form:form commandName=xyz action=abc” 当我检查 HTML 代码(查看源代码)时,它会转换为“form action=abc method=POST”
请帮我解决一下这个。
我在 Spring MVC 中有一个 web 控制器:
@RequestMapping("/")
public String create(@Valid @ModelAttribute Device device, BindingResult bindingResult) {
return getDefaultView();
}
Run Code Online (Sandbox Code Playgroud)
jsp视图:
<form:form role="form" commandName="device">
<form:input path="name" class="form-control"/>
<form:errors path="name" cssClass="text-danger"/>
<button type="submit">Submit</button>
</form:form>
Run Code Online (Sandbox Code Playgroud)
假设我的 Device 类只有一个属性name。我想验证它(示例长度 >= 5)
public class DeviceDTO {
@Size(min = 5)
String name;
//getter & setter..
}
Run Code Online (Sandbox Code Playgroud)
运行后,我在名称字段中输入字符串“abc”然后提交,表单将显示为:

我们可以看到有旧值和错误消息。但在某些情况下,我想用我自己的标准手动验证(该注释无法处理),我删除 @Size 注释并像这样更改我的控制器:
@RequestMapping("/")
public String create(@Valid @ModelAttribute Device device, BindingResult bindingResult) {
if(device.getName().length() < 6)
bindingResult.addError(new FieldError("device", "name", "custom error"));
return getDefaultView();
}
Run Code Online (Sandbox Code Playgroud)
但是现在,当我使用“abc”值提交表单时,会显示我的自定义错误,但我的 …
我有一个cuntry.java用变量调用的模型lang。我想检查 JSP 中基于lang. 它可以是“EN”或“FR”。当我编写下面的代码时,在 JSP 页面中抛出错误。
代码:
<form:radiobutton path="lang" id="language" value="FR" name="radios" <c:if ${cuntry.lang == 'FR' ? 'checked="checked"' : '' } /> ></form:radiobutton>
Run Code Online (Sandbox Code Playgroud)
错误 :Unterminated <form:radiobutton tag
在一个不可变的类/对象中,我有一个无参数构造函数将值初始化为 default/null,另一个必需的参数构造函数将所有值初始化为来自构造函数的参数。
使用表单绑定时(通过在控制器中的请求参数中指定),spring 始终调用无参数构造函数而不初始化值。如何确保 spring 仅调用所需的参数构造函数?
这是春季版本 5.1.5。我也尝试在“必需参数构造函数”上添加@ConstructorProperties,但无济于事。
我的不可变表单/bean 对象:
public class ImmutableObj {
private final Integer id;
private final String name;
// no arg constructor
// spring calls this one when resolving request params
public ImmutableObj() {
this(null, null);
}
// required args constructor
// I want spring to call this one when resolving request params
@ConstructorProperies({"id", "name"})
public ImmutableObj(Integer id, String name) {
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
public …Run Code Online (Sandbox Code Playgroud) 我有一个基于弹簧的表单,以便发布我的用户注册.最近,我不得不更新我的表单,以允许用户选择项目.此选择需要多选,因为它可以是多个选项.
我选择的选择是这样的:
<select name="projects" data-placeholder="Click to choose your project(s)" multiple class="chosen-select" style="width:350px;" tabindex="2">
<option value=""></option>
<option value="AA">AA</option>
<option value="BB">BB</option>
<option value="CC">CC</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我指定了name属性来发送param,但行为不是预期的:
projects AA
projects BB
Run Code Online (Sandbox Code Playgroud)
帖子发送了两次参数.我怎样才能发送类似......项目的东西:AA,BB?
谢谢
是否可以使用spring- 标签(spring表单标签库,用于数据绑定)中的标签(spring 标签库)从.properties消息文件中检索消息。spring:messageform:input
src/main/resources > texts.properties(文件)
testEntry=Test entry
Run Code Online (Sandbox Code Playgroud)
src/main/webapp/WIN-INF/JSP > test.jsp
如果我尝试这样做:
testEntry=Test entry
Run Code Online (Sandbox Code Playgroud)
我得到的结果<spring:message code="testEntry">是占位符而不是Test entry
如果我尝试这样做:
<%@taglib prefix='spring' uri='http://www.springframework.org/tags'%>
<%@taglib prefix='form' uri='http://www.springframework.org/tags/form'%>
<form:input path="test" placeholder='<spring:message code="testEntry">'/>
Run Code Online (Sandbox Code Playgroud)
我得到同样的结果。我明白这个问题。但是,是否有另一种方法可以在 JSP 中执行此操作,以便具有适当代码的消息显示为 spring-form 标记的属性值?
spring-form ×8
spring ×6
spring-mvc ×6
java ×4
jsp ×4
forms ×1
jquery ×1
jstl ×1
multi-select ×1
validation ×1