Как правильно написать выражение JSP
От: Burr Brown Россия  
Дата: 04.09.12 12:57
Оценка:
Добрый день всем, наткнулся на такую проблему: не знаю, как правильно вставить выражение JSP в HTML тэг JSP страницы. Например, если я пишу

<%
String authenticationURL = response.encodeURL("authenticate");
%>
<form action="<%=authenticationURL %>" method="post">

То вылезает странное сообщение об ошибке JSP: "Double value " " for attribute "action" on element "form": DOUBLE_WHITESPACE in PATH." Не понимаю, что оно значит. Пытался менять на action="${authenticationURL}", но ошибка не ушла. Думал, что это глюк среды, но при запуске вылетает с ошибкой в этой строке. Кто нибудь сталкивался, как правильно вставить выражение JSP в тэг
<form action="...">?
Re: Как правильно написать выражение JSP
От: Blazkowicz Россия  
Дата: 04.09.12 14:27
Оценка:
Здравствуйте, Burr Brown, Вы писали:

BB>Добрый день всем, наткнулся на такую проблему: не знаю, как правильно вставить выражение JSP в HTML тэг JSP страницы. Например, если я пишу


BB> <%

BB> String authenticationURL = response.encodeURL("authenticate");
BB> %>
BB> <form action="<%=authenticationURL %>" method="post">

BB>То вылезает странное сообщение об ошибке JSP: "Double value " " for attribute "action" on element "form": DOUBLE_WHITESPACE in PATH." Не понимаю, что оно значит. Пытался менять на action="${authenticationURL}", но ошибка не ушла. Думал, что это глюк среды, но при запуске вылетает с ошибкой в этой строке. Кто нибудь сталкивался, как правильно вставить выражение JSP в тэг

BB><form action="...">?
http://stackoverflow.com/a/4952889
Re[2]: Как правильно написать выражение JSP
От: Burr Brown Россия  
Дата: 05.09.12 04:42
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, Burr Brown, Вы писали:


BB>>Добрый день всем, наткнулся на такую проблему: не знаю, как правильно вставить выражение JSP в HTML тэг JSP страницы. Например, если я пишу


BB>> <%

BB>> String authenticationURL = response.encodeURL("authenticate");
BB>> %>
BB>> <form action="<%=authenticationURL %>" method="post">

BB>>То вылезает странное сообщение об ошибке JSP: "Double value " " for attribute "action" on element "form": DOUBLE_WHITESPACE in PATH." Не понимаю, что оно значит. Пытался менять на action="${authenticationURL}", но ошибка не ушла. Думал, что это глюк среды, но при запуске вылетает с ошибкой в этой строке. Кто нибудь сталкивался, как правильно вставить выражение JSP в тэг

BB>><form action="...">?
B>http://stackoverflow.com/a/4952889

Увы. Пробовал — ошибка осталась.
Re[2]: Как правильно написать выражение JSP
От: Burr Brown Россия  
Дата: 05.09.12 05:29
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>http://stackoverflow.com/a/4952889


Еще:

<form action="<html:requestURI uri="CentralServlet"/>" method="post"> — это дает ошибку (написал иначе, так тоже не помогло).

На той же странице:

<input type="text" size=15 name="firstName" value="<html:requestParameter property="firstName"/>"/> — нет ошибки.

То есть проблема именно в <form action="...">, в остальных местах это не ошибка.
Re: Как правильно написать выражение JSP
От: vsb Казахстан  
Дата: 05.09.12 05:32
Оценка:
А если <pre><%=authenticationURL%></pre> написать, что там будет? желательно посмотреть в HTML-коде получившейся страницы, чтобы HTML пробелы не сжевал.
Re[2]: Как правильно написать выражение JSP
От: Burr Brown Россия  
Дата: 05.09.12 05:39
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>А если <pre><%=authenticationURL%></pre> написать, что там будет? желательно посмотреть в HTML-коде получившейся страницы, чтобы HTML пробелы не сжевал.


Это хорошо, но не в этом месте: проблема в <form action="...">.

<form action="<pre><%=authenticationURL%></pre>"> — не правильно.
Re: Как правильно написать выражение JSP
От: bl-blx Россия http://yegodm.blogspot.com
Дата: 05.09.12 07:25
Оценка:
Здравствуйте, Burr Brown, Вы писали:

BB>Добрый день всем, наткнулся на такую проблему: не знаю, как правильно вставить выражение JSP в HTML тэг JSP страницы. Например, если я пишу


BB> <%

BB> String authenticationURL = response.encodeURL("authenticate");
BB> %>
BB> <form action="<%=authenticationURL %>" method="post">

BB>То вылезает странное сообщение об ошибке JSP: "Double value " " for attribute "action" on element "form": DOUBLE_WHITESPACE in PATH." Не понимаю, что оно значит. Пытался менять на action="${authenticationURL}", но ошибка не ушла. Думал, что это глюк среды, но при запуске вылетает с ошибкой в этой строке. Кто нибудь сталкивался, как правильно вставить выражение JSP в тэг

BB><form action="...">?

Я думаю, наиболее правдивое объяснение дано тут. Вкратце — для валидации
HTML некоторые не-HTML фрагменты заменяются на whitespace, что выливается в
пару пробелов в form action, а это недопустимо по мнение HTML-валидатора.
Можно попробовать заменять action с помощью jQuery, что-то типа такого:
<script type="text/javascript">
  $('form').get(0).setAttribute('action', '<%=authenticationURL %>');
</script>
El pueblo unido jamás será vencido.
Re[2]: Как правильно написать выражение JSP
От: Аноним  
Дата: 05.09.12 08:42
Оценка:
Здравствуйте, bl-blx, Вы писали:

BB>Я думаю, наиболее правдивое объяснение дано тут. Вкратце — для валидации

BB>HTML некоторые не-HTML фрагменты заменяются на whitespace, что выливается в
BB>пару пробелов в form action, а это недопустимо по мнение HTML-валидатора.
BB>Можно попробовать заменять action с помощью jQuery, что-то типа такого:
BB>
BB><script type="text/javascript">
BB>  $('form').get(0).setAttribute('action', '<%=authenticationURL %>');
BB></script>
BB>


Спасибо! Причину примерно понял, хотя и не до конца. Но по моему через jQuery не получится все равно написать <form action=, будет плеваться.
Re[2]: Как правильно написать выражение JSP
От: Burr Brown Россия  
Дата: 06.09.12 07:43
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, Burr Brown, Вы писали:


BB>>Добрый день всем, наткнулся на такую проблему: не знаю, как правильно вставить выражение JSP в HTML тэг JSP страницы. Например, если я пишу


BB>> <%

BB>> String authenticationURL = response.encodeURL("authenticate");
BB>> %>
BB>> <form action="<%=authenticationURL %>" method="post">

BB>>То вылезает странное сообщение об ошибке JSP: "Double value " " for attribute "action" on element "form": DOUBLE_WHITESPACE in PATH." Не понимаю, что оно значит. Пытался менять на action="${authenticationURL}", но ошибка не ушла. Думал, что это глюк среды, но при запуске вылетает с ошибкой в этой строке. Кто нибудь сталкивался, как правильно вставить выражение JSP в тэг

BB>><form action="...">?
B>http://stackoverflow.com/a/4952889

Действительно, в лоб это не решить, как выяснилось, там что-то сложное с валидацией JSP. Отчасти нашел решение проблемы, хотя и не самое красивое, может быть. Надо создать вместо тэга HTML свой пользовательский тэг (я сделал нечто универсальное) и заменить им <form action, например:

<html:htmlTag name="form" param1Name="action" param1Value="authenticationURL".../>

Концевой </form> также тогда надо менять. Работает!
Re[2]: Как правильно написать выражение JSP
От: Burr Brown Россия  
Дата: 06.09.12 13:58
Оценка:
Здравствуйте, bl-blx, Вы писали:

Нашел простое решение для подобных случаев (типа <form...):

<jsp:element name="img">
<jsp:attribute name="src">
<%=bundle.getString(pictureFlag) %>
</jsp:attribute>
</jsp:element>
Re[3]: Как правильно написать выражение JSP
От: bl-blx Россия http://yegodm.blogspot.com
Дата: 06.09.12 14:34
Оценка:
Здравствуйте, Burr Brown, Вы писали:

BB>Здравствуйте, bl-blx, Вы писали:


BB>Нашел простое решение для подобных случаев (типа <form...):


BB> <jsp:element name="img">

BB> <jsp:attribute name="src">
BB> <%=bundle.getString(pictureFlag) %>
BB> </jsp:attribute>
BB> </jsp:element>

Мне кажется, целесообразно взять готовый taglib. Всё удобнее читать:
<%@ taglib uri="taglib.tld" prefix="f" %>
<f:form method="post" action="/controller/action">
   ...
</f:form>
El pueblo unido jamás será vencido.
Re[4]: Как правильно написать выражение JSP
От: Burr Brown Россия  
Дата: 07.09.12 04:50
Оценка:
Здравствуйте, bl-blx, Вы писали:

BB>Здравствуйте, Burr Brown, Вы писали:


BB>>Здравствуйте, bl-blx, Вы писали:


BB>>Нашел простое решение для подобных случаев (типа <form...):


BB>> <jsp:element name="img">

BB>> <jsp:attribute name="src">
BB>> <%=bundle.getString(pictureFlag) %>
BB>> </jsp:attribute>
BB>> </jsp:element>

BB>Мне кажется, целесообразно взять готовый taglib. Всё удобнее читать:

BB>
BB><%@ taglib uri="taglib.tld" prefix="f" %>
BB><f:form method="post" action="/controller/action">
BB>   ...
BB></f:form> 
BB>


Хм... Пробовал. Дольше писать. Еще tld этот потом везде таскать. Так длиннее, но ничего не надо лишнего.
Тем более что в Вашем примере этот случай только для <form, а встречается он достаточно часто и для других тэгов, где вылезает та же проблема, например <img src="<%=bean.source %>"> или <a href="<%= bean.hyperlink %>"> приведет к той же ошибке. Писать под все тэглибы... долго. Я сначала написал нечто универсальное: <ht:htmlTag name="img" param1Name="src" param1Value="<%=bean.source %>"/>. Работает, но это еще бин таскать из проекта в проект, где проверки на правильность тэга и формирование выхода. Дольше.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.