标签: jsp-tags

自定义JSTL标记与正文

我们将在JSP/spring-project中为某种模板引擎使用JSTL和自定义JSTL标记.

有没有办法创建一个看起来像这样的标签:

<div id="site">
    <div id="header">Some title</div>
    <div id="navigation"> SOME DYNAMIC CONTENT HERE </div>
    <div id="content"> ${content} </div>
    <div id="footer"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

<mytags:template>
    <h1>Title</h1>
    <p>My content!</p>
</mytags:template>
Run Code Online (Sandbox Code Playgroud)

即在自定义JSTL标记内使用body-content ...

这有效:

<mytags:template content="some content... not HTML" />
Run Code Online (Sandbox Code Playgroud)

但在我们的案例中并不是很有用.

jsp jspx jstl jsp-tags spring-mvc

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

模拟spring的控制器:消息标签?

我正在为我的网页设计帮助/提示系统,我想基于jQuery的上下文帮助.

我的想法是,我会在事件上发布请求,并在特殊div中显示给出的repsonse.

我希望得到类似<spring:message>标签的行为,发布消息代码并获取本地化消息的字符串表示.如果它使用相同的资源会很棒.

有没有办法从Controller调用此标记?(这个标签后面有Java代码)或者模仿这个标签控制器端的最佳方法是什么?

java jsp jsp-tags spring-mvc

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

JSP foreach标记为两个变量

我想做这样的事情

<c:forEach var="item1" items="List1" var="item2" items="List2">
 <p> ${item1} ${item2}</p>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

一种解决方案是迭代两个List,如果两者具有相同的大小

<c:forEach var="i" begin="0" end="$(fn:length(List1))">
 <p> <%= List1.get(i) %> <%= List2.get(i)%>  //wrong syntax 
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

任何想法如何实现这一点.

jsp-tags

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

如何在 JSP 中获取完整 URL

我如何获得 JSP 页面的完整 URL。

例如,URL 可能是http://www.example.com/news.do/?language=nl&country=NL

如果我执行以下操作,我总是会得到 news.jsp 而不是 .do

out.print(request.getServletPath()); out.print(request.getRequestURI()); out.print(request.getRequest()); out.print(request.getContextPath());

java url jsp jsp-tags

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

在 JSP 中获取数组长度时出现 java.lang.NumberFormatException

我正在尝试访问 String[][] 数组的长度属性,但得到了一个NumberFormatException.

我的 JSP 代码

    <c:set var="len" value="${Constants.CATEGORIES.length}"/>
    <c:forEach var="i" begin="1" end="${len}" step="1" varStatus ="status">
        <a class="list-group-item" href="">${Constants.CATEGORIES[i][0]}</a>
    </c:forEach>
Run Code Online (Sandbox Code Playgroud)

下面是堆栈跟踪

java.lang.NumberFormatException: For input string: "length"
java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
java.lang.Integer.parseInt(Integer.java:580)
java.lang.Integer.parseInt(Integer.java:615)
javax.el.ArrayELResolver.coerce(ArrayELResolver.java:151)
javax.el.ArrayELResolver.getValue(ArrayELResolver.java:64)
org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:110)
org.apache.el.parser.AstValue.getValue(AstValue.java:169)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:115)
org.apache.jsp.WEB_002dINF.view.shared.categories_jsp._jspx_meth_c_005fset_005f0(categories_jsp.java:146)
org.apache.jsp.WEB_002dINF.view.shared.categories_jsp._jspService(categories_jsp.java:107)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:934)
org.apache.jsp.WEB_002dINF.view.home.index_jsp._jspService(index_jsp.java:133)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.raghavpro.bookhive.controllers.home.IndexServlet.doGet(IndexServlet.java:76)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Run Code Online (Sandbox Code Playgroud)

有什么线索吗?

java jsp servlets jsp-tags

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

在传递给JSP Tag Handler之前评估变量

在尝试使用自定义JSP标记库时,我在JSP中定义了一个变量,我想在传递给标记库之前对其进行评估.但是,我似乎无法让它发挥作用.这是我的JSP的简化版本:

<% int index = 8; %>

<foo:myTag myAttribute="something_<%= index %>"/>
Run Code Online (Sandbox Code Playgroud)

doStartTag()我的方法TagHandler使用pageContext的输出流基于输入的属性进行写入:

public int doStartTag() {
    ...
    out.println("Foo: " + this.myAttribute);
}
Run Code Online (Sandbox Code Playgroud)

但是,我在最终标记中看到的输出是:

Foo: something_<%= index %>
Run Code Online (Sandbox Code Playgroud)

而不是我想要的:

Foo: something_8
Run Code Online (Sandbox Code Playgroud)

我对该属性的标记库定义是:

<attribute>
    <name>myAttribute</name>
    <required>true</required>
</attribute>
Run Code Online (Sandbox Code Playgroud)

我试图用rtexprvalue两个true和配置属性false,但都没有工作.有没有办法可以配置属性,以便在发送给Handler之前对其进行评估?或者我是否完全错了?

我对JSP标签比较新,所以我愿意接受解决这个问题的替代方案.另外,我意识到在JSP中使用scriptlet是不受欢迎的,但是我在这里使用了一些遗留代码,所以我现在有点困惑.

编辑:

我也尝试过:

<foo:myTag myAttribute="something_${index}"/>
Run Code Online (Sandbox Code Playgroud)

这也不起作用 - 它只是输出something_${index}.

java jsp jsp-tags

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

是否有jsp标记文件的DTD或Schema文件?

我正在编写一些JSP 2.x标记文件.我现在已经搜索了几个小时,但是我找不到基于jsp的标记文件的doctype/schema定义/ dtds.

有没有人知道是否有dtd/schema文件来减轻编写这些标记文件的痛苦?在eclipse中没有自动完成等等是非常痛苦的.我必须检查我在编写标签时找到的几个教程.

澄清一下:我不是在谈论基于java的标签,也不是在谈论taglib tld文件.我说的是由jsp代码组成的标记文件,通常是结尾的.tag或tagx,它们位于META-INF/tags或WEB-INF/tags中.

提示非常受欢迎

java jsp jsp-tags

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

如何访问自定义taglib Java类中的JSP隐式对象?

我在这里研究了关于taglib和隐含对象的各种问题.虽然许多答案都提出了有趣的想法,但我找不到直接回答这个问题的答案.

为了说明我的困境,我说有一个实现javax.servlet.jsp.tagext.Tag接口的Java类......

import javax.servlet.ServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.Tag;

class MyTag implements Tag {
    private PageContext _pageContext;

    public void setPageContext(PageContext pageContext) {
        _pageContext = pageContext;
    }
    .
    .
    .
Run Code Online (Sandbox Code Playgroud)

这使我可以访问PageContext对象,该对象提供了有关调用JSP的一些有用信息.问题是,PageContext似乎没有提供对许多JSP的实际隐式对象的访问...

.
.
.
public int doEndTag() throws JspException {
    ServletRequest req = _pageContext.getRequest();
    .
    .
    .
    return EVAL_PAGE;
}
Run Code Online (Sandbox Code Playgroud)

上面描述的ServletRequest对象与HttpServletRequest完全不同,HttpServletRequest由JSP本身中的隐式对象"request"实现.这使得在我的类中调用像HttpServletRequest.getRequestURI()这样的方便的方法是有问题的.

因此,通过阅读这里的其他几个问题的答案,我留下的印象是,没有开箱即用的方法来获取实际的隐含对象.我要么必须在JSP中明确地将它们作为自定义标记的属性传递...

<mc:mytag request="<%=request%>"/>
Run Code Online (Sandbox Code Playgroud)

......或许它们存储在其他一些隐含对象我的散列访问...

<% session.setAttribute("request", request); %>
Run Code Online (Sandbox Code Playgroud)

哪个,如果是真的,自然会引出我的问题...... 你是不是在开玩笑吧? 必须有一些我在这里缺少的关键.在我的自定义taglib类中,访问JSP的隐式对象似乎是一件相当普遍的事情.每次我需要这些步骤时都必须采取这些步骤,这让我感到非常愚蠢 - 特别是当我被传递给像我这样可能为他提供的PageContext对象时,但似乎没有.

我真的觉得我在这里缺少一些基本的东西,但我不能为我的生活找出可能的东西.有人可以对此有所了解吗?

java jsp servlets jsp-tags

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

struts2列表框中的默认值

我们有列表框.这将显示美国的不同州.我希望状态"LA"应该被预选.但我不知道列表中"LA"的位置.它可能会有所不同.我们正在使用以下脚本.

<select id="state" name="state" title="State" class="js_required prompt_text grid_2" tabindex="5">
                <option>State</option>
                <s:iterator value="@com.homeservices.action.utils.StateCode@values()">
                    <option value="<s:property/>"><s:property/></option>
                </s:iterator>
</select>
Run Code Online (Sandbox Code Playgroud)

var @ com.homeservices.action.utils.StateCode @ values()给出了一个值列表:

AA
AE
AK
CA
CT
IL
LA
MA
MD
Run Code Online (Sandbox Code Playgroud)

......等等.

有人可以建议如何使洛杉矶成为一个预先选定的州.

jsp struts struts2 listbox jsp-tags

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

如何在jsp中显示实体属性

我需要在JSP数据存储区查询结果中显示.我获取数据并将它们转发到JSP文件中:

    Query query = new Query("oAuth", key);
    List<Entity> users = datastore.prepare(query).asList(FetchOptions.Builder.withLimit(5));

    try {
        // Set the attribute and Forward to hello.jsp
        req.setAttribute ("users", users); // to save your temporary calculations. 
        req.getRequestDispatcher("/sharemarkerusers.jsp").forward(req, resp);
    } catch (Exception ex) {
        ex.printStackTrace ();
    }
Run Code Online (Sandbox Code Playgroud)

这是我的jsp文件的内容

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page isELIgnored="false" %> 

<html>
  <body>
    <table>
        <c:forEach items="${users}" var="user">
            <tr>
                <td>${user.userEmail}</td>
            </tr>
        </c:forEach>
    </table>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

但是我得到了结果:在com.google.appengine.api.datastore.Entity类中找不到属性userEmail

好吧,当我在单元格中显示只是用户变量时,它实际显示:

<html>

  <body>

    <table>



            <tr>

                <td><Entity [oAuth("******")/oAuth("*********")]: 
    accessToken = *********** 
    accessTokenSecret …
Run Code Online (Sandbox Code Playgroud)

java google-app-engine jsp jsp-tags

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

标签 统计

jsp-tags ×10

jsp ×9

java ×7

servlets ×2

spring-mvc ×2

google-app-engine ×1

jspx ×1

jstl ×1

listbox ×1

struts ×1

struts2 ×1

url ×1