2014-11-05 31 views
0

我的表单中有一个字段用于介绍与合同相关的货件数量。装运不需要是合同的数量,它可以拆分成不同的装运,但可以肯定的是,装运数量不允许大于合同数量。使用实体字段的值来分隔表单:输入最大值

我可以限制提交表单或通过JavaScript验证,但我更喜欢不允许用户犯错:)。

我想知道,如果我可以像使用弹簧变量标记${cantidadPH}那样在写入jsp时分配<form:input>的最大特性。

,在占位符完美的作品:

<spring:message code="logicomex.transporte.cantidad.placeholder" var="cantidadPH"/> 
<form:input id="cantidad" path="cantidad" type="number" step="0.1" class="form-control" placeholder="${cantidadPH}" /> 

但是当我尝试使用“同样的技术”为最大值,这样的事情:

<form:hidden id="cantidadMax" path="contratMercan.cantidadMax" /> 
<form:input id="cantidad" path="cantidad" type="number" step="0.1" class="form-control" max="${cantidadMax}" placeholder="${cantidadPH}" /> 

它不处理${cantidadMax}如预期的那样。

有什么建议吗?

编辑:背的方法是这样的:

类像个支持bean是TransporteFormHelper:

public class TransporteFormHelper extends Transporte implements Serializable { 

Transporte实体ContratMercan属性,因此重写在TransporteFormHelper你可以找到:

@Override 
public ContratMercan getContratMercan() { 
    return super.getContratMercan(); 
} 

Inside ContratMercan there is必须用于设置<form:input>字段的max属性的最大数量字段。

private double cantidadMax; 

注:这不是我的代码,即时重建预制的应用程序,所以我必须携带这种后盾系统我以前从未使用过。;)

EDIT2: @grid,这似乎不工作...

<c:set var="cantidadMax" value="${transporteFormHelper.contratMercan.cantidadMax}" /> 
<form:input id="cantidad" path="cantidad" type="number" step="0.1" class="form-control" max="${cantidadMax}" placeholder="${cantidadPH}" /> 

请注意,path="cantidad"被引用transporteFormHelper.cantidad,我也tryed与${contratMercan.cantidadMax}${transporteFormHelper.contratMercan.cantidadMax}以及两者的他们没有设置max属性

+0

可以显示在Java bean代码这是支持这个JSP代码 – 2014-11-05 13:35:39

+0

完成@KrsnaChaitanya – 2014-11-05 14:38:56

+0

path =“contratMercan.cantidadMax”没有$ {} – grid 2014-11-05 14:56:04

回答

1

这是因为你实际上并没有使用完全相同的技术。只有部分。您不会在cantidadPH的情况下设置变量为var的变量。 您应该再次使用变量,即

<c:set var="cantidadMax" value="${yourCommandObjectName.contratMercan.cantidadMax}" /> 

在引用它之前。目前您正在使用隐藏字段ID。

+0

**检查我的问题中的编辑** – 2014-11-05 14:34:10

+0

ContratMercan中是否有getCandidadMax()访问器? – grid 2014-11-05 14:43:45

+0

当然;)我测试和使用的路径工作很好... – 2014-11-05 14:47:01

0

您应该直接使用JSTL表达式为max属性值。说这个bean支持的形式是myBean<form:form commandName="myBean" ...>),你可以写:

<form:input id="cantidad" path="cantidad" type="number" step="0.1" class="form-control" max="${myBean.cantidadMax}" placeholder="${cantidadPH}" /> 

或任何其它JSTL表达,从而导致cantidadMas

编辑

随着显示你的豆你最后的编辑,你应该写:

<form:input id="cantidad" path="cantidad" type="number" step="0.1" class="form-control" max="${transporteFormHelper.contratMercan.cantidadMax}" placeholder="${cantidadPH}" /> 

提供的豆实现TransporteFormHelper与名称的请求属性transporteFormHelper

+0

在我的代码:我尝试使用transporte .cantidadMax或cantidadMax,但这是行不通的... – 2014-11-05 14:32:08

+0

我已经试过,首先,但不幸它不起作用。 – 2014-11-05 15:29:26