我已经找到了几种使用if
/ else
代码和how to use it within a <tr>
tag的方法。
但是可以在<s:textfield>
代码中使用它吗?
如果某个参数为true,我想禁用多个字段(textfields和datepicker)。目前,我有两次完整的代码。一次使用disable="true"
,一次不使用。这使得jsp非常冗长。
如果有更好/更短的方式,我会很高兴。
答案 0 :(得分:4)
这个问题有很多解决方案,每个解决方案都根据标签的数量,所需的最干净/最短的代码比等更好地适应它......等等。
例如,你可以
设置变量并在文本字段中使用它:
<s:set var="disabled" value="%{condition}"/>
<s:textfield ... disabled="%{#disabled}" />
使用返回布尔值的action方法,如@PredragMaric答案:
public boolean getConditionFromAction(){
return (foo!=bar);
}
<s:textfield ... disabled="%{conditionFromAction}" />
创建两个JSP片段并包含它们(在刚刚禁用的情况下过度杀戮,但在其他情况下有用,例如显示完整的不同字段集)
<s:if test="%{condition}">
<s:include page="snippetA.jsp" />
</s:if>
<s:else>
<s:include page="snippetB.jsp" />
</s:else>
(在这种情况下,请记得放
<%@ taglib prefix="s" uri="/struts-tags" %>
在片段中也是如此。
在页面加载时使用javascript禁用它们(使用jQuery示例):
<script>
$(function(){
<s:if test="%{condition}">
$("input[type='text']").attr('disabled','disabled');
</s:if>
<s:else>
$("input[type='text']").removeAttr('disabled');
</s:else>
});
</script>
(最好使用类选择器)。
关于您的最新评论:
如果某个条件为真,我想禁用这些字段,以便无法进行进一步的编辑。
记住你MUST perform the controls server side,因为每个用户都能够改变HTML / DOM(使用Firebug,或FF DevTools,Chrome DevTools等......)或只是伪造一个请求 ad-hoc < / em>甚至没有访问您的页面,并启用您已禁用的字段。
客户端验证是用户友好的,并且作为第一个过滤器受到赞赏,服务器端验证是强制性的。
答案 1 :(得分:2)
在<s:textfield>
disabled="%{myCondition}"
其中myCondition
应评估为true
或false
。