相关疑难解决方法(0)

使用JSP include指令包含文件,JSP包含操作和使用JSP标记文件之间有什么区别?

似乎有两种使用JSP进行模板化的方法.包含其中一个语句的文件

<%@ include file="foo.html" %>
<jsp:include page="foo.html" />
Run Code Online (Sandbox Code Playgroud)

或使用JSP标记文件

// Save this as mytag.tag
<%@ tag description="Description" pageEncoding="UTF-8"%>
<html>
<head>
</head>
<body>
    <jsp:doBody/>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

在另一个JSP页面中调用它

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

<t:mytag>
    <h1>Hello World</h1>
</t:mytag>
Run Code Online (Sandbox Code Playgroud)

那么我应该使用哪种方法?现在一个被认为已被弃用,或者它们是否有效且涵盖不同的用例?

编辑

是否使用此标记文件与使用包含相同?

// Save this as product.tag
<%@ tag description="Product templage" pageEncoding="UTF-8"%>
<%@ tag import="com.myapp.Product" %>
<%@ attribute name="product" required="true" type="com.myapp.Product"%>

Product name: ${product.name} <br/>
Quantity: ${product.quantity} <br/>
Run Code Online (Sandbox Code Playgroud)

并在另一个JSP上调用它

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

<t:product>
    <c:forEach items="${cart.products}" var="product">
        <t:product product="${product}"/>
    </c:forEach>
</t:product>
Run Code Online (Sandbox Code Playgroud)

在我看来,这与使用include和传递参数非常相似.标签文件与包含相同吗?

java jsp jsp-tags include tagfile

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

为什么Facelets比JSF2.0以后的视图定义语言更优先于JSP?

我从JSF2.0开始看到,Facelets视图定义语言是首选的视图定义语言,而不是作为遗留后退而被弃用的JSP.我想理解为什么Facelets比JSF2.0以后的视图定义语言更优先于JSP?我知道JSP也有一些模板行为,这是采用Facelets的主要驱动点.

PS:我在stackoverflow上经历过这篇文章,但我不认为它回答了我的问题.因此将此作为单独的问题发布.

jsf jsp facelets jsf-2

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

创建JSP布局模板的最佳方法是什么?

可能重复:
JSP技巧使模板更容易?

我是JSPs和Servlets的新手,我想知道是否有一种简洁的方法来创建一个布局jsp并在类似的jsp页面上重用它,比如asp.net母版页.

我用谷歌搜索,有人说使用模板 http://java.sun.com/developer/technicalArticles/javaserverpages/jsp_templates 使用jstl标签库.它说要放一个这样的标签:

<%@ taglib uri='/WEB-INF/tlds/template.tld' prefix='template' %>
Run Code Online (Sandbox Code Playgroud)

但我得到错误(因为jstl.jar和standard.jar在WEB-INF/lib /目录中).

不过有人说jstl模板根据这个 Struts OR Tiles OR ??? ...... JSP模板解决方案有问题

我很乐意帮助我了解最好的方法.

编辑:我需要的是将页面的布局拆分为内容,标题等部分,并在使用布局模板的页面中设置此部分,就像asp.net母版页一样.

java jsp jstl

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

JSP模板继承

来自Django的背景,我经常使用"模板继承",其中多个模板从公共基础继承.在JSP中有一种简单的方法吗?如果没有,是否有一个替代JSP来做到这一点(除了Jython上的Django :)

基础模板

<html>
  <body>
    {% block content %}
    {% endblock %}
  </body>
<html>
Run Code Online (Sandbox Code Playgroud)

基本内容

{% extends "base template" %}
{% block content %}
<h1>{{ content.title }} <-- Fills in a variable</h1>
{{ content.body }} <-- Fills in another variable
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

将呈现如下(假设conten.title是"Insert Title Here",而content.body是"Insert Body Here")

<html>
  <body>
    <h1>Insert title Here <-- Fills in a variable</h1>
    Insert Body Here <-- Fills in another variable
  </body>
<html>
Run Code Online (Sandbox Code Playgroud)

java django templates jsp

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

JSP,它的工作方式类似于Ruby/Rails/Erb中的yield,layout,content_for

我试图弄清楚如何最有效地重用JSP代码.我喜欢Rails/erb以这种方式工作的方式......有了yield,layout,content_for

例:

main_layout.erb.html

<html>
  <head><%= yield :head %></head>
  <body><%= yield %></body>
</html>
Run Code Online (Sandbox Code Playgroud)

使用

<% content_for :head do %>
<title>A simple page</title>
<% end %>

<p>Hello, Rails!</p>
Run Code Online (Sandbox Code Playgroud)

在控制器中

layout "main_layout"
Run Code Online (Sandbox Code Playgroud)

使用JSP(不使用额外的框架),我可以得到的最接近的是什么?我知道JSP包含,但这与yield不同.有什么建议?

谢谢

ruby java jsp ruby-on-rails erb

10
推荐指数
1
解决办法
3942
查看次数

检查是否已设置JSP片段

我遇到了以下教程JSP技巧,使模板更容易?使用JSP创建页面模板(我如何错过这么久?!?).但是,在做了一些搜索之后,我似乎无法弄清楚如何(或者是否可能)检查是否已经设置了JSP片段.

这是我正在尝试做的一个例子:

我有一个名为的模板default.tag.它有2个JSP属性,定义如下:

<%@attribute name="title" fragment="true" required="true" %>
<%@attribute name="heading" fragment="true" %>
Run Code Online (Sandbox Code Playgroud)

然后在页面的代码中,我将页面的<title>元素设置为<jsp:invoke fragment="title" />.然后在页面后面,我有以下内容:

<c:choose>
    <c:when test="${true}">
        <jsp:invoke fragment="heading" />
    </c:when>
    <c:otherwise>
        <jsp:invoke fragment="title" />
    </c:otherwise>
</c:choose>
Run Code Online (Sandbox Code Playgroud)

我有的地方<c:when test="${true}">,我希望能够检查heading片段是否已经设置以显示它,但如果没有,则默认为title片段.

jsp

8
推荐指数
1
解决办法
3514
查看次数

页眉和页脚的JSP代码结构很好

我目前有以下JSP页面的代码结构:

MyPage.jsp

<jsp:include page="header.jsp"/>
Specific page content
<jsp:include page="footer.jsp"/>
Run Code Online (Sandbox Code Playgroud)

但是,这意味着页眉和页脚代码没有正确的HTML结构.例如,这是简化的页眉和页脚代码:

header.jsp中

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>${param.pageTitle}</title>
    </head>
    <body>
        <div class="container" style="margin-top: 80px;">
Run Code Online (Sandbox Code Playgroud)

footer.jsp中

        </div>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

因此,IDE会发出有关"缺少开始标记"/"缺少结束标记"的警告.我完全禁用警告感觉不太好,因为它可能会发现HTML结构的合法问题.

有没有更简洁的方法来构建JSP代码,以便我仍然可以以一些好的方式重用页眉和页脚代码?

html java jsp

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

我的用户访问方式是否正确?

我在我的jsp页面上应用spring security,我需要向具有不同角色的用户显示页面的不同部分,所有角色如下.

所有经过身份验证的用户>>编辑和添加新

管理>删除和编辑并添加新

匿名>添加新

<sec:authorize
        access="isAuthenticated()">
          Code of add new and edit buttons
 </sec:authorize>

 <sec:authorize 
         access="hasAnyRole('ADMIN')">
   Code to add new, edit and delete buttons
 </sec:authorize>

  <sec:authorize 
         access="isAnonymous()">
     Code to add new
  </sec:authorize>
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更简单的方法,在这种情况下,如果我想修改特定角色的访问权限,我必须更改其在security.xml文件中的访问规则以及我已设置角色访问权限的每个页面.

例如,假设我想要Admin角色无法访问删除按钮,那么我必须更改security.xml的代码以及admin角色经过身份验证的所有JSP页面以查看删除按钮.

有没有更简单的方法来做到这一点!?

spring-security

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

可以在Java中使用JSP模板吗?

我是JSP的新手.到目前为止,处理流程似乎是先运行Java,然后填充JSP模板.

我想知道Java中是否有一种方法可以利用JSP模板.我的意思是,想象我在类路径上有一个简单的"SimpleDiv.jsp"模板,如下所示:

<div id="${id}" class="${class}">
    ${content}
</div>
Run Code Online (Sandbox Code Playgroud)

然后从一个任意Java文件(可能甚至不在servlet上运行)中,我可以做这样的事情:

private String getDivHtml( id, html ) {
    Template simpleDiv = TemplateLoader.load("SimpleDiv.jsp");
    simpleDiv.set("id", id);
    simpleDiv.set("class", Whatever.CLASS_NAME);
    simpleDiv.set("content", html);

    return simpleDiv.toString();
}
Run Code Online (Sandbox Code Playgroud)

这是一个非常简单的例子,所以不要深究这个细节.主要问题是 - 我可以在Java中引入JSP模板并使其生成内联HTML吗?

java jsp

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

如何在Sitemesh 3中使用自定义属性

给出了一个由Sitemesh 3渲染的简单模板JSP:

<%@include file="../jsp_inc/taglibs.jsp" %>
<!DOCTYPE html>
<head>
    <link rel="stylesheet" type="text/css" href='<c:url value="/css/global.css" />' >
</head>
<body>
<h1>[HEADING]</h1>
<div>
    <sitemesh:write property='body'/>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)

该模板按预期工作,将JSP元素的内容插入模板中.

正如您对上述内容的期望,我希望能够将JSP中的值集(例如.h1元素)插入到模板中的相应元素中.

我试过了:

<sitemesh:getProperty property="page.heading"></sitemesh:getProperty>
Run Code Online (Sandbox Code Playgroud)

在模板/装饰器中:

<content tag="heading"></content>
Run Code Online (Sandbox Code Playgroud)

在JSP中,关于SO的另一个问题,但我认为可能是指Sitemesh 2.我正在使用Sitemesh 3.

有什么建议?

templates jsp sitemesh

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