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


Автор: ylims 16.7.2009, 07:36
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@page language="java" contentType="text/html; charset=windows-1251"%>
<%@taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@taglib uri="http://displaytag.sourceforge.net/" prefix="display"%>

<%@page import="ru.burpfr.contract.ShowContract"%>
<%@page import="java.util.List"%>

<%String sql="select * ...%>
<input type="button" value="Добавить договор" class="bbutton" onClick="window.location='fillSelect.do?t=1'"/>


  <%
  String lClass = "isis";
   if( request.getParameter( "class" ) != null ) {
      lClass = request.getParameter( "class" );
      if (!("isis".equals(lClass) || "its".equals(lClass) || "mars".equals(lClass) || "simple".equals(lClass) || "report".equals(lClass) || "mark".equals(lClass)))
      {
        lClass="";
      }
   }
   request.setAttribute("tableclass", lClass);
  
  
    
  List contracts=ShowContract.showContract(sql,1);
  Object foo = session.getAttribute( "test" );
  if( foo == null ) { 
  session.setAttribute("test", contracts);  
  }
  %> 
  <div align="center"> 
  <display:table name="sessionScope.test" defaultsort="1"  requestURI="${contextPath}/body.do?b=page.contractView" defaultorder="descending" class="${tableclass}">    
    <display:column property="typeDog" title="Тип" />
    <display:column property="n_dogovor" title="№ Договора" sortable="true" headerClass="sortable" href="body.do?b=page.dogovorInfo" paramId="id"/>
    <display:column property="dateDogovor" title="Дата договора" sortable="true" headerClass="sortable"/>           
    <display:column property="sumDogovor" title="Сумма (тыс.руб)"/>    
    <display:column property="srokD" title="Срок действия" /> 
    <display:column property="nazvOrg" title="Название организации" />     
    <display:column property="soderj" title="Краткое содержание" />
    <display:column property="usl_opl" title="Условия оплаты" />        
    <display:column property="estimate" title="Смета" sortable="true" headerClass="sortable"/>
    <display:column property="n_expense" title="Статья" />
    <display:column property="ispoln" title="Исполнение" />    
  </display:table>
  </div>  

<%session.removeAttribute("test");%>



в общем есть такая страница, делаю стандартный вывод таблицы с помощью DisplayTag, поле №договора это ссылка на какое то действие, в качастве параметра передаём этот самый номер договора, работает нормально если номер договора не содержит русских букв. 
если есть русские буквы то линка выглядит следующим образом :
Код

<a href="body.do?b=page.dogovorInfo&amp;id=1-%28%EF%29">1-(п)</a></td>

 есть какое то решение?

Автор: AlexeyVorotnikov 16.7.2009, 09:10
Абсолютно правильно выглядящий линк. Все буквы, которые не из набора latin-1 в URL'ах должны кодироваться.

Автор: ylims 16.7.2009, 11:02
аха, Понятно. Я тоже изначально так решил, но потом никак не мог получить раскодированную строку в Action куда передаю, поэтому решил что дело в неправильном значении параметра в сцылке.
 Как нужно корректно получить этот параметр?
 

 

Автор: Stjopka 16.7.2009, 21:02
Была схожая проблема - при передаче значений полей на русском языке выводились кракозяблики. 
Сделал как написано тут http://forum.vingrad.ru/forum/topic-39956/unread-1.html
 
указал 
<%
request.setCharacterEncoding("UTF-8");
%>

После этого параметр получал как обычно, и вроде заработало.

Может Вам тоже указать нечто подобное?

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