2011-12-27 37 views
0

私の質問を書いています。これで申し訳ありません。ここに私の質問の概要は、私がエスケープ= java文字列の文字

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

は、私がcQN==ujyRMdr Qi8dO9Xm*eRun ner==aLTyt?aKmGI」として "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); 
} 

Iamの取得出力などの値を入力フィールドを持つJSPで

です" あなたが+私が欲しくない空間に変換しているのを見たら。

私がdecoder.decodeを使用しない場合、他の文字はそれぞれのエスケープ文字に変換されます。 Actionクラスで、私は「1012990-c1e197eda0s-a1de198b0b2-819e25307deのように値を入力してどのようにIAMと取得値

JSPで、私はフィールドに

を持って


コードであるとして、しかし、私はしたいです-xnXrmXWBidhksyn70rGyTHa == cQNujyRMdrQi8dO9Xm + eRunERd == aLTyt + aKmGI + KRCcRtmP5ehfR ==アクションで」

private String saveProductName(SWHttpServletRequest request) 
      throws Exception 

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

IamはGETT私たちはすべてを+以外のデコーダを使用する場合は、 "1012990-c1e197eda0s-a1de198b0b2-819e25307de-xnXrmXWBidhksyn70rGyTHa%253D%253DcQNujyRMdrQi8dO9Xm + eRunERd%253D%253DaLTyt + aKmGI + KRCcRtmP5ehfR%253D%253D" として出力すると、「あなたはshouldn細かい

+2

私はHTMLEncodingではなく、URLEncodingに関連していると思います。 URLEncodingを試してみてください。 – kosa

+0

どのように*パラメータを取得していますか?この時点でなぜあなたは 'escapeHtml'を呼び出しているのか分かりません。 –

+0

最初に使用しました 文字列productName = request.getParameter( "productName"); 動作していないときは、私はescapeHTMLを使用しましたが、まだ使用していません。 URLEncoder.encodeを使用すると、+記号に問題はありませんが、%は%3Dに変換されています。 – srini

答えて

1

を働いていますアクション内の何かをデコードする必要があります。サーブレットのapiはあなたのためにそれを行います。 request.getParameter()で十分です。問題は、フォームフィールドまたはURLを生成するときに、パラメータを正しくエンコードしていないことです。

それは、フォームフィールドの場合、それは、HTMLコードの一部ですので、HTMLエスケープでなければなりません:

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

ストラットのHTML:隠さも、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()で十分です。

+0

以前はrequest.getParameter()を使用していましたが、それは機能しませんでした。使用されたデコーダ。私はテキストボックスに値を入力し、request.getParameter()を使用してActionクラスの値を取得します。 – srini

+0

何もデコードせずに動作するはずです。もう一度やり直して、アクションのコードと生成されたHTMLコードをフォームに表示してください。 –

+0

JB Nizet、Iam retrivingのコードを含めるように質問を編集しました – srini

関連する問題