Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > обработка xml с jstl


Автор: medin_84 1.10.2009, 12:27
дело происходит в websphere portal 6
специф jsr 168 не знаю важно это или нет

значит так в jsp используя jstl пытаюсь сделать что нидь с xml

xml с какого та примера. по примеру не работает
Код

<?xml version="1.0" encoding="utf-8"?>
<bookshelf>
    <book>
        <title>Книга про зайцев</title>
        <price>99.95</price>
        <authors>
            <author main="true">Тапкин Василий Васильевич</author>
            <author>Пупкина Ленка Ленковна</author>
        </authors>
    </book>
</bookshelf>


Код

<%@page session="false" contentType="text/html" pageEncoding="UTF-8" %>
<%@page import="javax.portlet.* %>
<%@taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>
<portlet:defineObjects/>

<%
String fxml = application.getRealPath("/WEB-INF/xml/") + "/book.xml"; //тут возник вопрос правильно ли беру xml?
pageContext.setAttribute("fxml", fxml);
%>

<x:parse var="bookshelf">
    <c:import url="${fxml}" />
</x:parse>

title:<x:out select="$bookshelf/bookshelf/book[1]/title" /> //портлет слетает здесь с этой строкой [Портлет не доступен говорит] / без этой строки не ругается хотя ошибок не вижу

ну и как мне взять title

jstl.jar, standard.jar в lib положил
jstl вроде работает
конструкция типа <c:out value="текст выводит" /> работает

не знаю что не так замучился
дайте кто нить ссылку на какой нидь бук по jstl
помогите кто чем может

Автор: dementiev 1.10.2009, 18:04
<%@taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>

это обязательно использовать? Легче и более управляемо будет делать парсинг в контроллере (сервлет или стратс экшн, что там у тебя), а потом уже передавать результат парсинга в jsp и выводить jstl тэгами. 

Автор: garbuz 1.10.2009, 21:46
medin_84, dementiev верно говорит. Посмотрите в сторону sax, dom, jdom. Библиотек для парсинга xml масса.

Автор: medin_84 2.10.2009, 06:12
я знаю что можно с dom
поначалу думал сделать с dom
просто я хотел как проще
Xml статичный просто выводить как это делается в xslt
раньше все работало в сервлете
Код

<%@page pageEncoding="UTF-8"%>
<%@page import="javax.xml.transform.*, javax.xml.transform.stream.*, java.io.*" %>
<%
try
{
    TransformerFactory transformerfactory = TransformerFactory.newInstance();
    Transformer transformer = transformerfactory.newTransformer(
        new StreamSource(new File(application.getRealPath("WEB-INF/xsl/html/") + "/articles.xsl"))
    );
    transformer.setParameter("lang",session.getAttribute("lang"));
    transformer.transform(
        new StreamSource(new File(application.getRealPath("WEB-INF/xml/") + "/articles.xml")),
        new StreamResult(out));
}
catch(Exception e){}
%>


просто применял Xsl шаблон
теперь надо сделать в виде портлета
данный код работает
вот только с формированием ссылок порблема
в портлете все ссылки кодированные или еще как не разбирался а в шаблоне ссылки обычным образом выводятся то есть типа http://server?getp=1&getg=2 а не так http://server:port/wps/portal/!ut/p/c0/dfgdfgdfgdfgdfgcvbdf-dfg_Ndfgdfg-dfgdfgfghfghfg_fghfgh_fghfgh_fghfgh куча хрени извеняюсь
потому собственно и надо переделывать если бы не было ссылок ославил бы как есть
c jstl только вчера собственно начал разбираться кажется весч удобная

и что думаете

Цитата

Легче и более управляемо будет делать парсинг в контроллере (сервлет или стратс экшн, что там у тебя), а потом уже передавать результат парсинга в jsp и выводить jstl тэгами.

может не большой пример кода для наглядности кто нибудь покажет
для лучшего усвоения

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)