我有一个使用Spring一个JSP:表单标记来绑定控件命令对象

我想修改如下:if [一些条件为真]比显示控件;否则,只显示文本。 (实施例:。如果用户是管理员,显示控件,否则只显示文本如果的whatsit仍处于打开状态进行修改,显示控件,否则显示文本)

在换句话说,我想这样:

<c:choose>
     <c:when test="SOME TEST HERE">
          <form:input path="SOME PATH" />
     </c:when>
     <c:otherwise>
          <p>${SOME PATH}</p>
     </c:otherwise>
</c:choose>

但我希望有一个简单的方法来创建此为每个字段(有很多)。

如果我创建一个自定义标签来生成上面的文字(赋予“了一些路径”),将在春节自定义标签获取绑定?

我想我要问的是:我可以创建生成春自定义标签自定义标签,然后获取约束?或者说所有的自定义标签(地雷和Spring的)同时得到处理?

有帮助吗?

解决方案

常见的唯一解决方案是尝试。

我尝试了三种不同的方式 - 一个JSP定制标签库,参数化的JSP包括和JSP2标签文件

前两个没有工作(虽然我怀疑标记库,可向工作),但标记文件没有!该解决方案是在专家Spring MVC和Web Flow的中给出的例子松散的基础。

下面是我的代码在WEB-INF /标签/ renderConditionalControl.tag:

<%@ tag body-content="tagdependent" isELIgnored="false" %>
<%@ attribute name="readOnly" required="true" %>
<%@ attribute name="path" required="true" %>
<%@ attribute name="type" required="false" %>
<%@ attribute name="className" required="true" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="form" uri="/WEB-INF/spring-form.tld" %>
<%@ taglib prefix="spring" uri="/WEB-INF/spring.tld" %>

<c:if test="${empty type}">
<c:set var="type" value="text" scope="page" />
</c:if>

<spring:bind path="${path}">
    <c:choose>
        <c:when test="${readOnly}">
            <span class="readOnly">${status.value}</span>
        </c:when>
        <c:otherwise>
           <input type="${type}" id="${status.expression}" name="${status.expression}"
                    value="${status.value}" class="${className}" />
        </c:otherwise>
    </c:choose>
</spring:bind>

这是在JSP代码:

首先,与其他标签库指令:

<%@ taglib tagdir="/WEB-INF/tags" prefix="tag" %> 

和形式内:

<tag:renderConditionalControl path="someObject.someField" type="text" readOnly="${someBoolean}" className="someClass" />
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top