2013-05-09 3 views
0

Я пытаюсь использовать любые скриптовые сценарии jsp в своем проекте и преобразовывать их в классы моделей. Потому что все мы знаем, что сценарии в нашем jsp - зло. Кроме этого, один фрагмент кода действительно дает мне проблемы, когда я пытаюсь разделить его на класс. Это довольно простой бит кода, который проходит через дочерние узлы. Вот мой JSP, который работает просто отлично:Преобразование Java - Scriptlet в класс

<% 
    NodeIterator ni = currentNode.getNodes(); 

    while (ni.hasNext()) { 
    Node nii = ni.nextNode(); 
    String printNodeTitle = nii.getProperty("fileReference").getString(); 
    %> 
    <img src="<%= printNodeTitle %>" /> 
    <% 
} 
%> 

Вот код в моем классе модели:

public class fileReference(){ 

    Node currentNode = (Node) context.getAttribute("currentNode"); 
    NodeIterator ni = currentNode.getNodes(); 

    while (ni.hasNext()) { 
     Node nii = nodeLoop.nextNode(); 
     String printNodeTitle = nii.getProperty("fileReference").getString(); 
    } 

    public String getPrintNodeTitle() { return printNodeTitle; } 
} 

Странная вещь я не получаю ошибку я просто не получить никакого вывода. Есть идеи? Любая помощь приветствуется.

+0

Почему вы предпочитаете преобразовать скриптлет в модель (класс). Его потеря усилий и времени. Итак, мое предложение - использовать EL и JSTL для лучшей безопасности. –

+0

nodeLoop? где он определен? – gnanz

ответ

1

Ваша переменная п должна быть итерацию, так что цикл в то время как должен выглядеть следующим образом:

while (ni.hasNext()) { 

Я не знаю, откуда вы берете переменную nodeLoop ... наверное, это просто пустой список итератор?

+0

спасибо @igor. Это был недосмотр с моей стороны. Даже добавив ni, чтобы быть итерируемым, я все равно ничего не получаю. Любые другие идеи? Благодаря! –

+0

То же самое внутри цикла: change Узел nii = nodeLoop.nextNode(); - Узел nii = ni.nextNode(); – Igor

+0

Кроме того, я могу сделать некоторые предложения: если вы можете запустить свой сервер в режиме отладки, просто добавьте точку останова внутри этого метода и посмотрите на переменные. Если вы не можете этого сделать, вы всегда можете добавить System.out.println с информацией о трассировке. Мне нравится добавлять их после каждой строки кода следующим образом: System.out.println («шаг 1»), чтобы увидеть, достигнете ли вы этого шага (например, внутри цикла) – Igor

Смежные вопросы