我想使用 EL 在 jsp 中使用传递给它的参数调用 bean 上的函数。问题是它不允许类似:“ ${teacherBean.certificationFor(${particularField})”
问题是我想遍历一个数组并为作为参数传递的数组中的所有值调用函数certificationFor。我通过以下方式获取数组中的值:
所以基本上我想做类似的事情: ${teacherBean.certificationFor(${particularField}) 但我不能那样做。我可以用任何其他方式做到这一点吗?
我是 EL 的新手。:) 任何帮助表示赞赏。
我正在开发的Spring MVC应用程序中使用Spring的表单标记库.我正在为之工作的公司根据某些标签的自定义属性的定义实施了一些公司范围的政策.例如,默认情况下(虽然包含标准的javascript文件)所有标签的值都会自动转换为大写.为了禁用此功能,可以通过以下方式使用自定义属性定义其标记:
<input type="text" uppercase="false" />
Run Code Online (Sandbox Code Playgroud)
问题是将这些自定义属性添加到spring:form标记会在运行时导致错误.我已经粘贴了下面的错误.
org.apache.jasper.JasperException: /WEB-INF/jsp/reportCriteria.jsp(45,5) Attribute uppercase invalid for tag input according to TLD
Run Code Online (Sandbox Code Playgroud)
我的问题是:有没有办法扩展TLD以允许这些属性,还是有任何其他方式将这些自定义属性添加到这些spring:form标签?
我试着运行以下几行.
<%=application.getInitParameter("tagline")%>
<br />
<%=config.getInitParameter("admincontact")%>
${initParam.tagline}
<br />
${pageContext.servletConfig.initParameter("admincontact")}
Run Code Online (Sandbox Code Playgroud)
我的web.xml是
<servlet>
<jsp-file>/index.jsp</jsp-file>
<init-param>
<param-name>admincontact</param-name>
<param-value>8939302763</param-value>
</init-param>
</servlet>
<context-param>
<param-name>tagline</param-name>
<param-value>Each one Plant one</param-value>
Run Code Online (Sandbox Code Playgroud)
我得到一个异常at
${pageContext.servletConfig.initParameter("admincontact")}
和null值
<%=config.getInitParameter("admincontact")%>.
问候,约翰
我想在我的jsp文档文件中使用这样的东西:
<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
Run Code Online (Sandbox Code Playgroud)
但是,在我看过的所有30多个示例中,每个人都使用简单的jsp语法,而不是jsp文档语法.像这样的东西:
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"
xmlns:t="/WEB-INF/tags"
xmlns="http://www.w3.org/1999/xhtml"
version="2.0">
Run Code Online (Sandbox Code Playgroud)
根本行不通.页面上看不到驻留在/ WEB-INF /标签中的所有标记文件.只有我定义了一个tld文件,并列出了那里的所有标签,才能在页面上访问它们.是否可以避免tld声明并仍在jsp文档页面中使用标记文件?
我有一组对象。我想使用 JSTL 从集合中迭代这些对象以将其显示在 jsp 上。它可以与 List 一起使用,但我需要使用 Set。
jstl 可以迭代一个集合吗?
<c:forEach items="${pitches}" var="pitch" />
Run Code Online (Sandbox Code Playgroud)
在上面:音调有一组对象说Set<employee>......
我怎样才能在音调中迭代这个员工集???
我正在尝试创建一个安装在吊索中的捆绑包并使用自定义TagLib.我想使用标记文件,而不是使用扩展TagSupport的java类.这样我就可以使用Sling Model来表示JCR和JSP标记文件来表示标记.
这是我的标记文件,它是一个非常基本的锚,没什么特别的,我只是想测试一下:
<%@ tag body-content="scriptless" %>
<%@ tag language="java" pageEncoding="ISO-8859-1"%>
<%@ tag import="org.apache.sling.api.resource.Resource, CallToAction" %>
<%@ attribute name="resource" rtexprvalue="true" required="true" type="org.apache.sling.api.resource.Resource" %>
<%
CallToAction cta = resource.adaptTo(CallToAction.class);
jspContext.setAttribute("cta", cta);
%>
<jsp:doBody var="bodytext">
<c:choose>
<c:when test="${not empty bodytext }">
<c:set var="text" value="${bodytext}" />
</c:when>
<c:when test="${not empty cta.text}">
<c:set var="text" value="${cta.text}" />
</c:when>
</c:choose>
<a class="${cta.css}" href="${cta.href}" title="${cta.title}" >${text}</a>
Run Code Online (Sandbox Code Playgroud)
我创建了一个TLD文件,我在WEB-INF/tags和META-INF/tags文件夹中尝试过(我剥离了xmlns,但该文件有效且有效):
<tlib-version>1.0</tlib-version>
<short-name>test</short-name>
<uri>http://www.example.com/taglibs/test/1.0</uri>
<tag-file>
<description>
Creates an anchor (<a>) HTML element according to the description in
CallToAction
</description>
<name>cta</name>
<path>/WEB-INF/tags/cta.tag</path> …Run Code Online (Sandbox Code Playgroud) 作为良好的编码实践,我们不应该在 jsp 中使用 scriptlet。我想在我的 jsp 中为其他开发人员编写注释,但不想在页面转换为 html 时将其显示给客户端。
我们有什么办法可以使用 jstl 或 El 编写以下代码吗?
<%
//for perfromance we redirect control to this jsp
//as this jsp don't load unused dom ,css , js
%>
Run Code Online (Sandbox Code Playgroud)
我在互联网上找不到任何关于此的东西?
我正在 Tomcat 中运行我的应用程序,由于 char 数组,我收到 OutofMemory 错误。我参考了Tomcat关于这个错误的错误报告。现在我决定在 catalina.properties 中添加 org.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true
我的问题是,
1.设置这个值后有什么副作用?
2.它将清除哪些值(是否会清除会话ID等值)?
只是想知道是否有办法从我的类访问方法而不创建自定义taglib.
示例我得到了一个提供4种方法的类:hasDisplay(),hasCreate(),hasDelete()和hasEdit() - 所有这些只返回一个布尔值.
从我的jsp我只想
<c:if test="{ar.hasEdit}"></c:if>
Run Code Online (Sandbox Code Playgroud)
但这只适用于getter和setter方法,对吗?
我有一个Spring Boot项目,正在尝试在JSP文件中进行以下调用:
<%@ taglib prefix="tagz" tagdir="/WEB-INF/tags" %>
<tagz:utils tabs="true"/>
Run Code Online (Sandbox Code Playgroud)
标签文件夹位于-
\ src \ main \ resources \ WEB-INF \ tags
JSP文件文件夹位于-
\ src \ main \ resources \ META-INF \ resources \ WEB-INF \ jsp
我还定义了application.properties文件以包括:
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
Run Code Online (Sandbox Code Playgroud)
如果我尝试将标签文件夹放在除Intellij之外的任何其他类路径中,则会显示错误,该错误无法在编辑器中识别该调用。
如果删除taglib调用,将正确显示JSP页面。
我的pom.xml当然具有以下依赖关系:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.5.4.RELEASE</version>
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-tomcat</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>8.5.15</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0-alpha-1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
白标错误页面
此应用程序没有针对/ error的显式映射,因此您将其视为后备。
Sun Jun 25 16:12:47 IDT 2017发生意外错误(类型=内部服务器错误,状态= 500)。/WEB-INF/jsp/main.jsp(行:[11],列:[4])在导入了前缀[tagz]的标签库中未定义标签[utils]
我认为这与Spring Boot中静态文件的配置有关,但是我尝试添加spring.resources.static- …
jsp-tags ×10
jsp ×5
jstl ×4
el ×3
java ×3
spring-mvc ×2
aem ×1
forms ×1
javascript ×1
jsf ×1
sling ×1
spring ×1
spring-boot ×1
tomcat ×1