使用实体字段的值来分隔表单:输入最大值

时间:2014-11-05 13:18:56

标签: java jsp

我的表格中有一个字段用于介绍与合同相关的货件数量。装运不需要是合同的数量,可以在不同的装运中拆分,但可以肯定的是,装运数量不得大于合同数量。

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

我想知道在编写jsp时我是否可以使用<form:input>以及使用<spring:message>的弹簧变量${cantidadPH}标记来分配<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}

它不会按预期处理public class TransporteFormHelper extends Transporte implements Serializable {

有什么建议吗?

编辑:支持方法如下:

类似于支持bean的类是TransporteFormHelper:

Transporte

ContratMercan实体具有TransporteFormHelper属性,因此您可以找到@Override public ContratMercan getContratMercan() { return super.getContratMercan(); } 中的覆盖:

max

在ContratMercan内部,有一个最大数量字段,必须用于设置<form:input>字段的private double cantidadMax; 属性。

<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}" />

注意: 这不是我的代码,我正在重建一个预制的应用程序,所以我必须携带我以前从未使用过的支持系统。;)

EDIT2: @grid,似乎无法正常工作......

path="cantidad"

请注意,transporteFormHelper.cantidad引用${contratMercan.cantidadMax},我也尝试使用${transporteFormHelper.contratMercan.cantidadMax}max,而且他们都没有设置{{1}属性

2 个答案:

答案 0 :(得分:1)

这是因为你实际上并没有使用完全相同的技术。只是部分。您没有像 cantidadPH 情况中的var那样设置 cantidadMax 变量。 你应该再使用一个变量,即

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

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

答案 1 :(得分: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}" />

或导致cantidadMas

的任何其他JSTL表达式

修改

上次编辑显示你的bean时,你应该写:

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

如果实现TransporteFormHelper的bean是名为transporteFormHelper

的请求属性