powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Можно ли написать функцию-хелпер в jsp?
15 сообщений из 15, страница 1 из 1
Можно ли написать функцию-хелпер в jsp?
    #37697728
Жентос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никак не могу найти книгу по jsp, решил спросить на форуме: а можно ли в jsp использовать простые функции, которые написаны программистом (например, на вход подается набор параметров, а на выходе -- тег для гиперссылки)?

Если можно, то подскажите, пожалуйста, синтаксис
...
Рейтинг: 0 / 0
Можно ли написать функцию-хелпер в jsp?
    #37697755
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЖентосНикак не могу найти книгу по jsp Используя туториал напишите функцию
...
Рейтинг: 0 / 0
Можно ли написать функцию-хелпер в jsp?
    #37697774
Жентос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman, спасибо. Похоже -- то, что нужно
...
Рейтинг: 0 / 0
Можно ли написать функцию-хелпер в jsp?
    #37698084
Жентос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе, получилось сделать простенькую функцию, которая выдавала строку, но не использовала входных параметров. Подскажите, что стоит подправить в тексте страницы, чтобы она хотя бы скомпилировалась:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
<%@page import="com.epam.mvc3.helpers.Utils"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>

<c:forEach items="${model}" var="item">

          <tr>
            <td height="10"><hr width="100%" size="2" /></td>
          </tr>
          <tr>          
            <td height="20"><p><%=${Utils.actionLink(item.name, "topic", "", new String(item.id) )}%></p></td>
            <td width = 10%>
            </td>
          </tr>
          <tr>
	        <td height="20"><p>Author: ${item.author}</p>
                            <p>Last updated: ${item.timeLastUpdated}</p>
                            <p># comments: ${item.commentsCount}</p>
            </td>
          </tr>
          <tr>
	        <td height="45"><p>${item.text}</p></td>
          </tr>
</c:forEach>
...
Рейтинг: 0 / 0
Можно ли написать функцию-хелпер в jsp?
    #37699095
Жентос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то структуре страницы плохо стало... Сделаю репост:

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

Код:
01 <%@page import="com.epam.mvc3.helpers.Utils"%>
02 <%@ page language="java" contentType="text/html; charset=UTF-8"
03 pageEncoding="UTF-8"%>
04
05 <%@ taglib uri=" http://java.sun.com/jsp/jstl/core" prefix="c" %>
06 <%@ page session="false" %>
07 <c:forEach items="${model}" var="item">
08 <tr>
09 <td height="20"><p><%=Utils.actionLink( "${item.name}", "topic", "")%></p></td>
10 </tr>
11 </c:forEach>


Вот функция-хелпер:
Код:
01 public static String actionLink(String text, String controller, String action) {
02 String result, URI = "";
03
04 URI = controller + "/" + action + "/";
05 for (int i = 0; i < args.length; i++) {
06 URI = URI + args[i];
07 }
08
09 result = "<a href=\"" + URI + "\">" + text + "</a>";
10
11 return result;
12
13 }


Все бы хорошо, но никак не могу внутрь функции передать динамический параметр. Со статическим текстом все замечательно, а вот передать свойство объекта item -- ну никак не получается. Подскажите, как можно выйти из такой ситуации?
...
Рейтинг: 0 / 0
Можно ли написать функцию-хелпер в jsp?
    #37699121
vas0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например так:

Код: java
1.
2.
3.
<c:forEach items="${model}" var="item">
 <jsp:useBean id="item" type="<класс объекта item (например: com.company.project.beans.Item)"/>
 <td height="20"><p><%=${Utils.actionLink(item.name, "topic", "", new String(item.id) )}%></p></td>
...
Рейтинг: 0 / 0
Можно ли написать функцию-хелпер в jsp?
    #37699129
vas0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неправильно скопипастил, вызов будет немного другой:
Код: java
1.
2.
3.
<c:forEach items="${model}" var="item">
 <jsp:useBean id="item" type="<класс объекта item (например: com.company.project.beans.Item)>"/>
 <td height="20"><p><%=Utils.actionLink(item.name, "topic", "", new String(item.id))%></p></td>
...
Рейтинг: 0 / 0
Можно ли написать функцию-хелпер в jsp?
    #37699452
rabiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жентос,

Еще есть вариант - написать реализацию для своего тега. На подобии JSTL тегов, только с какой-нибудь своей реализацией.
В результате можно получить библиотеку своих тегов - что-нибудь типа:
<myTags:hyperLink parameter1="..." parameter2="..."/>
и отрендерится этот элемент может в тот или иной html, который будет зависеть от входных параметров, переданных в атрибутах parameter1 и parameter2.
...
Рейтинг: 0 / 0
Можно ли написать функцию-хелпер в jsp?
    #37699491
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю, pageContext.findAttribute -- то, что надо.

Код: java
1.
<%=Utils.actionLink(item.name, "topic", "", new String(item.id))%>



будет выглядеть как-то так:

Код: java
1.
2.
3.
4.
<%
ItemObject item = (ItemObject)pageContext.findAttribute("item");
out(Utils.actionLink(item.name, "topic", "", new String(item.id)));
%>



Хотя в любом случае джава-код в JSP - нехороший признак.
...
Рейтинг: 0 / 0
Можно ли написать функцию-хелпер в jsp?
    #37699496
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только сейчас почитал внимательнее :)
ItemObject читать как com.company.project.beans.Item.
...
Рейтинг: 0 / 0
Можно ли написать функцию-хелпер в jsp?
    #37699510
Жентос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. SakХотя в любом случае джава-код в JSP - нехороший признак.
А какой подход используется в реальных проектах?

Ничего похожего на @Html.ActionLiknл() из ASP .NET MVC я не нашел. Может, искал не там, где надо.
...
Рейтинг: 0 / 0
Можно ли написать функцию-хелпер в jsp?
    #37699916
Жентос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
A подскажите, пожалуйста, разницу между двумя фрагментами кода:
Код: java
1.
2.
3.
<c:forEach items="${model}" var="item">
 <jsp:useBean id="item" type="<класс объекта item (например: com.company.project.beans.Item)"/>
 <td height="45"><p><%=item.getShortName()%>}</p></td>



и

Код: java
1.
2.
3.
4.
5.
6.
<c:forEach items="${model}" var="item">
 <jsp:useBean id="item" type="<класс объекта item (например: com.company.project.beans.Item)"/>
 <td height="20"><p>Author: ${item.author}</p>
                            <p>Last updated: ${item.timeLastUpdated}</p>
                            <p># comments: ${item.commentsCount}</p>
 </td>



Второй мне нравится меньше, т.к. все свойства объекта объявлены как private, но тем не менее это -- работает. Не очень понятно, за счет чего...
...
Рейтинг: 0 / 0
Можно ли написать функцию-хелпер в jsp?
    #37700106
rabiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЖентосAlexander A. SakХотя в любом случае джава-код в JSP - нехороший признак.
А какой подход используется в реальных проектах?

Ничего похожего на @Html.ActionLiknл() из ASP .NET MVC я не нашел. Может, искал не там, где надо.

Блин... Я же вам сказал - создайте свой, так называемый пользовательский тег и будет вам счастье.
jsp user tags
...
Рейтинг: 0 / 0
Можно ли написать функцию-хелпер в jsp?
    #37700299
vas0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЖентосA подскажите, пожалуйста, разницу между двумя фрагментами кода:
Код: java
1.
2.
3.
<c:forEach items="${model}" var="item">
 <jsp:useBean id="item" type="<класс объекта item (например: com.company.project.beans.Item)"/>
 <td height="45"><p><%=item.getShortName()%>}</p></td>

и
Код: java
1.
2.
3.
4.
5.
6.
<c:forEach items="${model}" var="item">
 <jsp:useBean id="item" type="<класс объекта item (например: com.company.project.beans.Item)"/>
 <td height="20"><p>Author: ${item.author}</p>
                            <p>Last updated: ${item.timeLastUpdated}</p>
                            <p># comments: ${item.commentsCount}</p>
 </td>


Второй мне нравится меньше, т.к. все свойства объекта объявлены как private, но тем не менее это -- работает. Не очень понятно, за счет чего...В первом варианте ты используешь scriplets (java код). Объект item у тебя находится в pageContext и тебе его нужно оттуда взять. Это можно сделать несколькими способами <jsp:useBean /> или pageContext.findAttribute("item").

Во втором варианте ты используешь Expression Language, и здесь обращение идет не к полям, а к свойствам (getter/setter).

Вообще смешивание java кода и html разметки обычно выглядит ужасно и уже давно считается дурным тоном, так как без этого можно легко обойтись. Чем тебя не устраивает формирование ссылок с помощью jstl?
Код: java
1.
2.
3.
4.
5.
<c:url var="href" value="${controller}/${action}">
   <c:param name="id" value="{item.id}"/>
   ...
</c:url>
<a href="${href}">${text}</a>
...
Рейтинг: 0 / 0
Можно ли написать функцию-хелпер в jsp?
    #37700479
Жентос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vas0Во втором варианте ты используешь Expression Language, и здесь обращение идет не к полям, а к свойствам (getter/setter).Но они же все private? Я после useBean к ним не могу напрямую обратиться. Вот это и непонятно.

vas0Вообще смешивание java кода и html разметки обычно выглядит ужасно и уже давно считается дурным тоном, так как без этого можно легко обойтись. Чем тебя не устраивает формирование ссылок с помощью jstl?
Код: java
1.
2.
3.
4.
5.
<c:url var="href" value="${controller}/${action}">
   <c:param name="id" value="{item.id}"/>
   ...
</c:url>
<a href="${href}">${text}</a>


Всем устраивает, но тут такое дело: меня на тренинг отправили. Причем тренинг в формате: вот тебе задача, делай сам. Из-за загрузки на работе я его уже просрочил. Пока планирую сделать так:
1. Сделать менее-более рабочее что-то
2. Оптимизировать / довести до ума / освоить новые технологиии (jstl, например) и применить их (весь этот проект пока растет из того, что я знаю/умею при помощи других средств, потому и решения могут быть странными и неоптимальными)
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Можно ли написать функцию-хелпер в jsp?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]