gpt4 book ai didi

Spring MVC 标签与自定义标签交互

转载 作者:行者123 更新时间:2023-12-02 10:28:29 24 4
gpt4 key购买 nike

我有一个 JSP,它使用 Spring:form 标记将控件绑定(bind)到命令对象。

我想修改它如下:如果[某些条件为真]则显示控件;否则,只显示文本。 (示例:如果用户是管理员,则显示控件,否则仅显示文本。如果 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>

但我想要一种简单的方法来为每个字段(有很多)创建它。

如果我创建一个自定义标签来生成上述文本(给定“SOME PATH”),Spring 自定义标签会被绑定(bind)吗?

我想我真正要问的是:我可以创建自定义标签来生成然后绑定(bind)的 Spring 自定义标签吗?或者所有自定义标签(我的和 Spring 的)是否同时处理?

最佳答案

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

我尝试了三种不同的方法——JSP 自定义标记库、参数化 JSP 包含和 JSP2 标记文件。

前两个不起作用(尽管我怀疑标签库可以起作用),但是标签文件起作用了!该解决方案大致基于 Expert Spring MVC and Web Flow 中给出的示例。 .

这是我在 WEB-INF/tags/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" />

关于Spring MVC 标签与自定义标签交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/439861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com