экранирование = символ в строке Java - PullRequest
0 голосов
/ 27 декабря 2011

Я форматирую свой вопрос. Извини за это. Вот краткое изложение моего вопроса

в JSP у меня есть поле

<input  maxlength="200" name="productName" >

Я ввожу значение как "cQN==ujyRMdr+Qi8dO9Xm*eRun+ner==aLTyt?aKmGI"

В действии

public String getXMLObject(HttpServletRequest request)  throws Exception
{
    URLDecoder decoder = new URLDecoder();
    String productName = decoder.decode(productLicenseKey ,"UTF-8");
    System.out.println("-->ProductNameAction---->getXMLObject--->productName -->  : "+productName);
}

Я получаю вывод как "cQN==ujyRMdr Qi8dO9Xm*eRun ner==aLTyt?aKmGI". Если вы наблюдаете, как + превращается в пространство, которое я не хочу.

Если я не буду использовать decoder.decode, другие символы конвертируются в соответствующие escape-символы. Но я хочу, как это в классе действий


код, как IAM и получение значения

в JSP у меня есть поле

Я ввожу значение, например "1012990-c1e197eda0s-a1de198b0b2-819e25307de-xnXrmXWBidhksyn70rGyTHa == cQNujyRMdrQi8dO9Xm + eRunERd == aLTytm aKmR5RKR В действии

private String saveProductName( SWHttpServletRequest request)
             throws Exception

{
    try
    {
                String ProductName      = request.getParameter("ProductName");
                System.out.println("-->ProductAction---->saveProductName--->ProductName -->  : "+ProductName);  
    }
 }

Iam получает выходные данные в виде "1012990-c1e197eda0s-a1de198b0b2-819e25307de-xnXrmXWBidhksyn70rGyTHa% 253D% 253DcQNujyRMdrQi8dO9Xm + eRunERd3D3RT3RT3RT3RT3RT3RT3RT3RT3RT3RT3RT3RT3RT3RT3RT3RT3RT3RT3RT3RT3RT5 Если мы используем декодер, кроме + все работает нормально

1 Ответ

1 голос
/ 28 декабря 2011

Вам не нужно ничего декодировать в действии. Сервлет API делает это для вас. request.getParameter() достаточно. Проблема в том, что вы неправильно закодировали параметр при создании поля формы или URL.

Если это поле формы, то оно является частью HTML-кода и, следовательно, должно быть экранировано HTML:

<input type="hidden" name="someName" value="<c:out value="${theFieldValue}"/>"/>

Struts html: hidden также правильно обрабатывает html-экранирование.

Если это URL, то он должен быть закодирован в URL и экранирован html:

<c:url var="theUrl" value="someUrl.do">
    <c:param name="someName" value="${theFieldValue}"/>
</c:url>
<a href="<c:out value="${theUrl}"/>">The link text</a>

Если вы введете это значение в текстовое поле формы, тогда достаточно request.getParameter().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...