Java:帮助我将工作 .jsp 转换为某种 XML 表示法

标签 java xml jsp jstl jsp-tags

我有一个工作正常的.jsp 文件。它可能有点特别,因为它正在调用一个工厂 (ArticlesFactory),该工厂返回 Articles 类的单例(但这是一个细节)(它通过自动获取来实现)共享的 Google 文档被转换为 html,然后存储到 ".../text/en" 但这也是一个细节)。

以下工作正常:它完全满足我的需要,它自动获取文章,我可以正常访问我的 Articles 实例。

<%@ page pageEncoding="UTF-8" contentType="text/html;charset=utf-8" %>
<%@ page import="com.domain.projectname.*"%>
<!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" dir="ltr" lang="en">
<head></head>
<body>

    <% Articles articles = ArticlesFactory.create( getServletContext().getRealPath( "text/en" )); %>
    We have <%= articles.getNbItems()%>

</body>
</html>

但是,我必须将它转换为一些我不知道也不理解的符号,我什至不确定它的名称是什么,显然我遇到了一些问题。

不知道是命名空间问题还是 ArticlesFactory 工厂的静态工厂方法创建 Articles 单例有问题:

<?xml version="1.0" encoding="UTF-8"?>
<jsp:root version="2.0" xmlns:jsp="http://java.sun.com/JSP/Page"
    xmlns:c="urn:jsptld:http://java.sun.com/jsp/jstl/core">
<jsp:directive.page import="com.domain.project.ArticlesFactory"/>
<jsp:directive.page contentType="text/html; charset=UTF-8" />

We have ${variable.nbItems}  <!-- What to put here !? -->

</jsp:root>

我尝试了很多东西,但无法弄清楚。

基本上我需要: - 从 ArticlesFactory 类调用静态 create 方法 - 通过将 getServletContext().getRealPath( "text/en")) 的结果传递给它

(应该返回一个 Articles 实例)

  • 然后我想把 getNbItems() 的结果放在我想显示的变量中

请注意,我不想从任何 servlet/dispatcher 调用 getServletContext:我想像第一个工作示例那样调用它(即直接从 .jsp 内部调用)。

最佳答案

您基本上是在寻找 "JSP in XML syntax" .大多数已在 this (old) tutorial 中进行了解释.您还必须替换 <% %>通过 <jsp:scriptlet><%= %>通过 <jsp:expression> .

xmlns:c顺便说一句,这里不需要命名空间,除非您想使用任何 JSTL core标签。

this (also old) tutorial 中解释的表达式语言(那些 ${} 的东西)顺便说一下,这是一个单独的主题。它只作用于页面、请求、 session 或应用程序范围内的对象。然而,在 scriptlet 中,变量仅在 local 范围(实际上是 methodlocal)中定义,这些在 EL 中不可用。您需要在 Scriptlet 中执行以下操作才能使其在 EL 中可用:

pageContext.setAttribute("articles", articles); // Put in page scope (recommended).
request.setAttribute("articles", articles); // Or in request scope. Also accessible by any include files.
session.setAttribute("articles", articles); // Or in session scope. Accessible by all requests in same session.
application.setAttribute("articles", articles); // Or in application scope. Accessible by all sessions.

这样可以通过${articles}获得在 EL 中。

关于Java:帮助我将工作 .jsp 转换为某种 XML 表示法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2836117/

相关文章:

android - 谷歌地图在 actionbarsherlock 选项卡中

jsp - 如何响应 JSP Servlet 请求的自定义字符串

java - 如何查看组合值和设定值?

java - XPath:如何正确实现XpathResolver

java - Oracle 查询到 Hibernate 查询的转换

java - ArrayList(集合<?扩展E> c)

java - @Transactional 和调用两个或多个表的逻辑应该放在哪里?

android - 在 ListView 中显示来自 xml 资源的数组不起作用

java - Spring消息不显示

java - 如何在lambda表达式中调用方法