标签: jsp-tags

JSP中的自定义呈现基于没有instanceof的类的类型

你如何在不同类型的jsp中正确呈现对象列表?比如说,我必须以指定的顺序渲染这些不同的对象.

一种方法可能是使用公共类型变量或instanceof,但这意味着有一个大的switch/if语句来管理它们:

<c:forEach var="o" items="${bigListofObjects}"  >
    <c:choose>
        <c:when test='${o.type=="simple"}' >
        <!-- render simple -->
        </c:when>
        <c:when test='${o.type=="complex"}' >
        <!-- render complex -->
        </c:when>
        <!-- etc etc ... -->
    </c:choose>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

我可以为每个类添加一个render()方法,但这意味着将视图与其余代码混合.

如果我想稍后渲染另一种类型会发生什么?我可以用自定义jsp标签做些什么吗?

java jsp jstl jsp-tags

5
推荐指数
1
解决办法
1976
查看次数

Spring应用程序根变量

我现在访问我的Spring应用程序如下:

http://localhost:8080/my-app
Run Code Online (Sandbox Code Playgroud)

在我的JSP中,我想访问我的应用程序根目录,而不是硬编码到主页的超链接<a href="/my-app">.是否有某种变量可以在我的jsps中访问以指向应用程序根目录?谢谢

java spring jsp jsp-tags spring-mvc

5
推荐指数
1
解决办法
4096
查看次数

javax.el.PropertyNotFoundException:类“java.lang.String”没有该属性

我正在创建示例 Spring MVC 应用程序。在我的控制器类中,我定义如下:

Map<String, Object> myModel = new HashMap<String, Object>();
        myModel.put("now", now);
        myModel.put("products", this.productManager.getProducts());

        return new ModelAndView("hello", "model", myModel);
Run Code Online (Sandbox Code Playgroud)

当我将以下部分放入 JSP 文件中时,出现javax.el.PropertyNotFoundException异常

<c:forEach items="${model.products}" var="prod">
        <c:out value="${prod.description}"/> <i>$<c:out value="${prod.price}"/></i><br><br>
    </c:forEach>
Run Code Online (Sandbox Code Playgroud)

这是我的完整例外:

javax.el.PropertyNotFoundException: The class 'java.lang.String' does not have the property 'description'.
Run Code Online (Sandbox Code Playgroud)

但在我的域中,类private Sting description属性有公共 getter 和 setter。那个Product班级是公共班级。

产品类别:

public class Product implements Serializable {
    private String description;
    private Double price;

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description …
Run Code Online (Sandbox Code Playgroud)

spring jsp jsp-tags spring-mvc

5
推荐指数
2
解决办法
3万
查看次数

JSP标签的Charset

关于JSP标签的charset的简单问题.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib  tagdir="/WEB-INF/tags" prefix="custom" %>
<custom:mytag>  </custom:mytag>
Run Code Online (Sandbox Code Playgroud)

mytag很简单.tag文件位于WEB-INF/tags.eclipse中此文件的charset是UTF-8.由于某种原因,UTF-8符号无法正常显示.

这只影响包括标签,包含的另一个jsp-s显示正常

jsp jsp-tags character-encoding

5
推荐指数
1
解决办法
5873
查看次数

org.springframework.expression.spel.SpelEvaluationException:EL1027E :(位置4):不支持对'com.test.domain.Employee'类型的索引

我正在开发一个Spring Roo应用程序,并在列表(在list.jspx中)中显示对象时,正在获取所引用对象的所有属性。例如:

@RooJavaBean
@RooToString    
@RooJpaActiveRecord

public class Employee {    
    @NotNull
    private String empName;    
    @ManyToOne
    private Department department;
}
Run Code Online (Sandbox Code Playgroud)

和部门

@RooJavaBean    
@RooToString    
@RooJpaActiveRecord    
public class Department {    
    @NotNull
    private String deptName;

   @NotNull
   private String deptLocation;
}
Run Code Online (Sandbox Code Playgroud)

现在,在roo中构建一个Web项目,并添加部门条目和员工条目之后,我在员工列表中得到了一个难看的表。显示部门实体的所有属性,而我的意图是显示部门名称(deptName)。

试图更改list.jspx,如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<div xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:page="urn:jsptagdir:/WEB-INF/tags/form" xmlns:table="urn:jsptagdir:/WEB-INF/tags/form/fields" version="2.0">
    <jsp:directive.page contentType="text/html;charset=UTF-8"/>
    <jsp:output omit-xml-declaration="yes"/>
    <page:list id="pl_com_test_domain_Employee" items="${employees}" z="user-managed">
        <table:table data="${employees}" id="l_com_test_domain_Employee" path="/employees" z="user-managed">
            <table:column id="c_com_test_domain_Employee_Department" property="department.deptName" z="user-managed"/>
            <table:column id="c_com_test_domain_Employee__DeptLocation" property="deptLocation" z="user-managed"/>
        </table:table>
    </page:list>
Run Code Online (Sandbox Code Playgroud)

错误:

org.springframework.expression.spel.SpelEvaluationException: EL1027E:(pos 4): Indexing into type 'com.test.domain.Employee' is not supported …
Run Code Online (Sandbox Code Playgroud)

jspx jsp-tags spring-mvc spring-roo spelevaluationexception

5
推荐指数
1
解决办法
1万
查看次数

JSTL1.2根据标记文件中的TLD或属性指令,属性var不接受任何表达式

我一直在谷歌搜索一个答案,它不起作用.

我收到此错误:

org.apache.jasper.JasperException:/WEB-INF/pages/calendarEntry.jsp(第5行,第46列)根据标记文件中的TLD或属性指令,属性var不接受任何表达式

这是我的jsp文件

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
    <c:set var="eventDate" value="${calendarEntry.date}"/>
    <h1 class="page-header">Calendar Event on <fmt:formatDate value="date" var="${eventDate}" /></h1>
Run Code Online (Sandbox Code Playgroud)

错误发生在最后一行.FMT

Web App声明

<web-app version="3.1"
     xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_1.xsd">
Run Code Online (Sandbox Code Playgroud)

Maven Depedencies

<dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>javax.servlet.jsp-api</artifactId>
    <version>2.3.0</version>
    <scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

部署环境 - Tomcat 8

java jstl jsp-tags maven tomcat8

5
推荐指数
2
解决办法
1万
查看次数

嵌入式Tomcat中具有JSP标签库的Spring-Boot

我目前正在迁移Spring MVC Webapp(通过spring-boot将xml-config迁移到java-config,将tomcat迁移到嵌入式tomcat)。

该webapp使用freemarker作为模板引擎和JSP Taglib。现在,当我调用一个freemarker页面时,出现以下错误:

freemarker.ext.jsp.TaglibFactory$TaglibGettingException: 
No TLD was found for the "http://www.springframework.org/tags/form" JSP taglib URI. (TLD-s are searched according the JSP 2.2 specification. In development- and embedded-servlet-container setups you may also need the "MetaInfTldSources" and "ClasspathTlds" freemarker.ext.servlet.FreemarkerServlet init-params or the similar system properites.)
Run Code Online (Sandbox Code Playgroud)

freemarker-header.ftl以以下代码段开头:

<#assign form=JspTaglibs["http://www.springframework.org/tags/form"]>
<#assign core=JspTaglibs["http://java.sun.com/jstl/core"]>
<#assign spring=JspTaglibs["http://www.springframework.org/tags"]>
<#assign osc=JspTaglibs["/WEB-INF/osc.tld"]>
Run Code Online (Sandbox Code Playgroud)

我没有找到任何可用的MetaInfTldSources和ClasspathTlds搜索结果。有人解决过这个问题吗?

哈比卜(KR Habib)

freemarker jsp-tags spring-boot embedded-tomcat-8

5
推荐指数
1
解决办法
3595
查看次数

基于JSP的Spring模板化

我正在使用Spring的MVC和JSP视图.每个JSP页面都有类似的结构 - 标题,内容,页脚,也许是侧边栏等.围绕"最佳实践",人们似乎"包含"页脚和标题,但这意味着每个JSP页面都包含这些"包含"语句,给出一个固定的格式.在我看来,更好的解决方案将涉及嵌套视图,其中基本模板使用适合于相关页面的信息进行扩展.此方法的一个优点是您可以在基本模板中假定默认值,而无需在其他地方重复它们.另一个优点是你可以进一步分离结构和内容("标题"和"页脚"是结构,

似乎没有成为这个在Spring中的MVC级别的任何支持,但它可以在JSP中使用自定义标签来实现的,而事实上,有一个非常笨拙的尝试在这里(这或许可以解释我想要什么比这个问题好,虽然我认为你可以减少干扰).

无论如何,我的问题是 - 这已经作为(流行/标准)标签库存在吗?我很高兴写自定义标签,但我对这些东西(生成网站)的印象是,已经有大量的解决方案,大多数工作都在选择正确的工具(例如Spring).谢谢.

model-view-controller spring jsp jsp-tags spring-mvc

4
推荐指数
1
解决办法
4304
查看次数

如何将服务器端变量传递到JSP中的核心标记?

这个表达式标签为我输出了正确的值<%= drug.NonAuthoritative%>

虽然我无法恢复药物的价值.NonAuthoritative用于C标签

<c:if test="${drug.NonAuthoritative}">&nbsp;<bean:message key="WriteScript.msgNonAuthoritative"></bean:message></c:if>
Run Code Online (Sandbox Code Playgroud)

方法是

public Boolean NonAuthoritative() {
    return nonAuthoritative;
}
Run Code Online (Sandbox Code Playgroud)

java jsp jsp-tags

4
推荐指数
1
解决办法
665
查看次数

如何将表达式语言(EL)的double或float值转换为int而不进行舍入?

我在JSP中使用表达式语言(EL).

<c:set var="noOfPages" value="${numItems/itemsPerPage}" />

<fmt:formatNumber var="noOfPagesRounded" value="${noOfPages}" maxFractionDigits="0" />

<c:if  test="${(numItems % itemsPerPage) > 0}">
    <c:set var="noOfPages" value="${noOfPagesRounded + 1}"/>
</c:if >
Run Code Online (Sandbox Code Playgroud)

如你所见,我正在计算不.需要显示x否的页面.每页的结果.

从第2行开始,这不是一直有效的,即formatNumber标记是我的除法结果的四舍五入,我不想四舍五入.

即73个记录每页20个需要4页,但我得到结果5,因为在第2行它是结果3.65到4的四舍五入但我想要noOfPagesRounded=3.

如何在没有四舍五入的情况下转换floatdouble估价int

jsp expression jsp-tags el java-ee

4
推荐指数
1
解决办法
7037
查看次数