Struts中的JSTL标记

时间:2012-12-12 19:38:33

标签: java jsp struts jstl

我必须检查struts标记中的条件并启用或禁用该字段,如下所示:

<c:when test="${multipleCase=='true'}">
    <html:text property="${row.dataElementJavaName}" 
               maxlength="${row.dataElementSize}" 
               size="60" 
               value="${row.dataElementValue}"
               onkeyup="javascript:enableSave()" 
               onkeypress="return letternumber(event,'c')" 
               <c:if test="${model.readonlyStatus=='true'}">disabled</c:if> 
    />        
</c:when>

编译时出现以下错误:

Attribute: <c:if is not a valid attribute name
Encountered end tag </c:if> without corresponding start tag.

如果我在HTML输入字段中使用它,它可以正常工作。另一种选择是什么?任何输入?

2 个答案:

答案 0 :(得分:1)

您不能只将<c:if>标记放在<html:text>标记声明中。它仅支持定义的here等属性。

这就是抱怨<c:if属性无效的错误原因。它将它视为另一个属性,它不存在。所以我认为你在代码中尝试的是不可能的。

正如您所提到的,包括HTML中的<c:if>可以正常工作。我希望它看起来像这样:

...
<input type="text" name="${row.dataElementJavaName}" 
           maxlength="${row.dataElementSize}" 
           size="60" 
           value="${row.dataElementValue}"
           onkeyup="javascript:enableSave()" 
           onkeypress="return letternumber(event,'c')" 
           <c:if test="${model.readonlyStatus=='true'}">disabled</c:if> 
/>  
...

答案 1 :(得分:1)

<c:if>移到<html:text>之外,如下所示:

<c:when test="${multipleCase=='true'}">
  <c:if test="${model.readonlyStatus=='true'}">
    <html:text property="${row.dataElementJavaName}" 
               maxlength="${row.dataElementSize}" 
               size="60" 
               value="${row.dataElementValue}"
               onkeyup="javascript:enableSave()" 
               onkeypress="return letternumber(event,'c')" 
               disabled
    />   
  </c:if>     
  <c:if test="${model.readonlyStatus!='true'}">
    <html:text property="${row.dataElementJavaName}" 
               maxlength="${row.dataElementSize}" 
               size="60" 
               value="${row.dataElementValue}"
               onkeyup="javascript:enableSave()" 
               onkeypress="return letternumber(event,'c')" 
    />   
  </c:if>     
</c:when>