2012-10-14 33 views
0

我想添加窗体上的禁用属性:隐藏标签动态时,我浏览我的模型中的对象列表。代码我有(不工作)变少了一些这样的:动态添加一个属性到弹簧mvc窗体:隐藏控件

<c:forEach items="${myModel.myList}" var="obj"> 
     <div id="${obj.id}" onclick="selectObject(this);"><span>${obj.name}</span></div> 
     <form:hidden path="myModel.selectedObj" /> 
</c:forEach> 

我想在列表中obj的隐藏输入他的ID等于selectedObj不被禁止,并且每其他隐藏的输入我想被禁用。这是我试过的:

<form:hidden path="myModel.selectedObj" <c:out value="${obj.id != myModel.selectedObj.id ? "disabled=\"disabled\"" : ""}"></c:out> /> 

正如我所说的,这并没有奏效。有什么想法吗?

回答

0

尝试使用这段代码:

<c:forEach items="${myModel.myList}" var="obj"> 
    <div id="${obj.id}" onclick="selectObject(this);"><span>${obj.name}</span></div> 
    <c:if test="${obj.id eq myModel.selectedObj.id}"> 
     <form:hidden path="myModel.selectedObj" /> 
    </c:if> 
    <c:if test="${obj.id ne myModel.selectedObj.id}"> 
     <form:hidden path="myModel.selectedObj" disabled="disabled" /> 
    </c:if> 
</c:forEach> 

或者你可以使用一个<c:choose />,与<c:when /><c:otherwise />标签:

<c:forEach items="${myModel.myList}" var="obj"> 
    <div id="${obj.id}" onclick="selectObject(this);"><span>${obj.name}</span></div> 
    <c:choose> 
     <c:when test="${obj.id eq myModel.selectedObj.id}"> 
      <form:hidden path="myModel.selectedObj" /> 
     </c:when> 
     <c:otherwise> 
      <form:hidden path="myModel.selectedObj" disabled="disabled" /> 
     </otherwise> 
    </c:choose> 
</c:foreach> 
+0

我想你的建议。问题是即使当我写' ' disabled属性didn' t呈现。这就像春天忽略了它不知道的属性。 –

+0

你使用的是什么版本的春天?也许[这](https://jira.springsource.org/browse/SPR-8661)错误正在影响你。 – jelies

+0

我的弹簧版本是3.1.0.RELEASE,所以我不这么认为。当我查看源代码时,我看不到禁用的属性 –