2012-12-12 151 views
1

我要检查在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输入字段中使用它可以正常工作。另一种选择是什么?任何投入?

+0

支柱的哪个版本和您使用该版本的JSTL?你还使用哪个servlet api版本? – nwaltham

+0

你想在某些条件下设置属性disabled = true? – invariant

回答

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

移动<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>