标签: jsp-tags

如何在JspTags中访问请求?

我想request.getContextPath()在扩展的JSP标记内部调用SimpleTagSupport,有什么方法可以做到吗?

java jsp jsp-tags

16
推荐指数
1
解决办法
8318
查看次数

J2EE:自定义标记属性的默认值

因此,根据Sun的J2EE文档(http://docs.sun.com/app/docs/doc/819-3669/bnani?l=en&a=view),"如果不需要标记属性,标记处理程序应该提供默认值."

我的问题是如何根据文档的描述定义默认值.这是代码:

<%@ attribute name="visible" required="false" type="java.lang.Boolean" %>
<c:if test="${visible}">
     My Tag Contents Here
</c:if>
Run Code Online (Sandbox Code Playgroud)

显然,这个标签不会编译,因为它缺少tag指令和核心库导入.我的观点是,我希望"visible"属性默认为TRUE."标签属性不是必需的",因此"标签处理程序应提供默认值".我想提供一个默认值,所以我错过了什么?

任何帮助是极大的赞赏.

java jsp-tags custom-attributes java-ee

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

在web.xml中声明JSP taglib指令

我似乎记得读过可以声明taglib指令,例如:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Run Code Online (Sandbox Code Playgroud)

在web.xml中.这消除了在使用taglib的每个JSP文件中复制此指令的需要.有人能告诉我如何将这些指令添加到web.xml中吗?

java jsp jsp-tags

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

如何将spring beans注入jsp 2.0 SimpleTag?

目前我需要spring bean的jsp 2.0标签使用此代码:

ac = WebApplicationContextUtils.getWebApplicationContext( servletContext);
ac.getBeansOfType(MyRequestedClass.class);
Run Code Online (Sandbox Code Playgroud)

我刚刚得到第一个匹配的bean.

这段代码运行正常,但是有一个不希望出现的缺点,我花了大约一半的页面渲染时间来查找spring bean,因为每次调用一个标签时都会发生这种情况.我想也许可以将bean放入应用程序范围或至少是会话范围.但是,处理这个问题的最聪明方法是什么?

java spring jsp jsp-tags

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

JSP标签+ scriptlet.如何启用scriptlet?

我有一个使用标签模板的页面.我的web.xml非常基础.

我只想在页面中运行一些代码.
不,我对标签或其他替代品不感兴趣.我想使用坏练习scriptlet哈哈.

到目前为止,我收到此"HTTP ERROR 500"错误:

Scripting elements ( %!, jsp:declaration, %=, jsp:expression, %, jsp:scriptlet ) are disallowed here.
Run Code Online (Sandbox Code Playgroud)

虽然我的文件看起来像:

/WEB-INF/web.xml

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>
Run Code Online (Sandbox Code Playgroud)

/WEB-INF/tags/wrapper.tag

<%@tag description="Simple Wrapper Tag" pageEncoding="UTF-8"%>
<%@ attribute name="title" required="true" type="java.lang.String"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>
<head>
<title>${title}</title>
</head>

<body>
    <jsp:doBody />
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

的index.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="t" tagdir="/WEB-INF/tags"%>

<t:wrapper>
    <jsp:attribute name="title">My nice title</jsp:attribute>

    <jsp:body>
    <h1><%="some code generated …
Run Code Online (Sandbox Code Playgroud)

java jsp jsp-tags scriptlet

13
推荐指数
2
解决办法
4万
查看次数

有没有什么好的理由在JSP标记中使用<rtexprvalue> false </ rtexprvalue>?

是否有任何理由不允许将scriptlet或EL表达式作为属性值插入?

假设我们有标签:

<tag>
    <name>mytag</name>
    <tag-class>org.apache.beehive.netui.tags.tree.Tree</tag-class>
    <attribute>
        <name>attr</name>
        <required>false</required>
        <rtexprvalue>false</rtexprvalue>
        <type>boolean</type>
    </attribute>
</tag>
Run Code Online (Sandbox Code Playgroud)

什么可能是一个拒绝下面的好理由?

<my:mytag attr="${setting}" />
Run Code Online (Sandbox Code Playgroud)

java jsp jsp-tags

12
推荐指数
1
解决办法
5206
查看次数

JSTL自定义标签

我如何为具有2个属性的自定义标签编写(只是一个模板),这些属性允许我使用jstl标记逻辑输出html片段(html表),可以从我的jsp调用.

这可以在不编写java类的情况下完成,这是我在所有示例中看到的.

我想要实现的是将我的JSP中重复的JSTL逻辑外部化为自定义标记,然后使用属性在运行时传递标记所需的动态值.

谢谢,

jsp jstl jsp-tags

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

JSP标签生命周期

我刚刚在我的代码中引入了一个错误,因为我似乎误解了jsp标签的生命周期.

标签在错误之前就像这样工作:我将标签作为属性传递给某个集合,并将其显示为表格.该集合从控制器传递到JSP.

错误之后:我删除了设置集合的属性.相反,在标记中我检查集合是否为null,然后从请求中按名称获取它(使用命名约定).

我没想到的事情:收集最初在标签中设置后,在后续执行中永远不会变为空!它仍被定义为TLD中的非要求属性.

希望标签不会保留执行之间的先前值.

lifecycle jsp jsp-tags

11
推荐指数
2
解决办法
7302
查看次数

从自定义JSP标记访问Request对象

我正在尝试制作一组​​封装表单元素的自定义标记(标记和验证).

有一种方法可以轻松检索"Out"对象:

JspWriter out = getJspContext().getOut();
Run Code Online (Sandbox Code Playgroud)

但是我无法弄清楚如何获取请求对象.我希望能够从Tag类中直接访问提交的表单值,以便我可以验证每个字段.

文件是相当稀疏,所以我想也许我可以使用的JspContext对象以某种方式获得请求属性.但我不明白不同的范围.

System.out.println(getJspContext().findAttribute("field1"));
Run Code Online (Sandbox Code Playgroud)

总是打印"null".

Enumeration e = getJspContext().getAttributeNamesInScope(1);
Run Code Online (Sandbox Code Playgroud)

循环并打印出枚举只是给我一个不存在的类列表:

javax.servlet.jsp.jspOut
javax.servlet.jsp.jspPage
javax.servlet.jsp.jspSession
javax.servlet.jsp.jspApplication
javax.servlet.jsp.jspPageContext
javax.servlet.jsp.jspConfig
javax.servlet.jsp.jspResponse
javax.servlet.jsp.jspRequest
Run Code Online (Sandbox Code Playgroud)

这甚至可能吗?

如果没有,有人可以指向我处理表单显示和验证的标签库吗?我在互联网上搜索了几个小时,似乎每一个都停止了,我无法下载它们.无论是那个或建议一个更好的替代处理表格.

编辑:标签扩展了SimpleTagSupport类.

java jsp jsp-tags request

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

当从另一个jsp包含时,<%@ page pageEncoding ="UTF-8"%>被忽略

我有代码(现在在github中),如:

my.jsp(一个通用的jsp - 所有我的jspS或多或少都遵循这个模式):

<%@ include file="include/top.jsp" %>
<title>THE TITLE</title>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="include/head.jsp" %>
<%@ include file="include/no_menu.jsp" %>
CONTENT
<%@ include file="include/bottom.jsp" %>
Run Code Online (Sandbox Code Playgroud)

其中:

top.jsp:

<%@ page session="false"%>
<%@ include file="tag_libs.jsp"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Run Code Online (Sandbox Code Playgroud)

head.jsp:

<link href="${pageContext.request.contextPath}/css/twoColFixLtHdr.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <div class="container"><!-- closes in bottom -->
        <div class="header"><!-- closes in menu -->
            <p>
                <a href="home"> …
Run Code Online (Sandbox Code Playgroud)

encoding jsp jsp-tags include tomcat7

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