2016-04-24 13 views
1

私はj2eeでウェブサイトを開発しました。開発環境で文字エンコードに問題はありませんでしたが、私がopenshift(jboss 7、mysql 5.5)にアプリケーションをデプロイすると、UTFの書式設定が機能していないようです。私はサーブレットが文字をデコードできないことがわかるので、サーバー側でログオンしようとしましたが、jboss環境問題のようです。コードの後ろにあるフロント/バックエンドのコードを見つけてください。すでに試したことを示しています。Openshift JBoss文字エンコーディング

おかげで、

  <form role="form" id="createadform" name="createadform" action="createads" method="POST" enctype="multipart/form-data"> 

<div class="row" > 
    <div class="col-md-6 col-md-offset-3" > 

     <div class="panel panel-primary"> 

     <div class="panel-heading"> 
     <h3 class="panel-title">Aşağıdaki formu doldurarak ilanınızı oluşturabilirsiniz.</h3> 

    </div>  

      <div class="panel-body "> 


      <div class="col-md-6" > 

    <div class="form-group has-feedback" style="width: 100%"> 
    <label for="isim">Başlık (En fazla 25 karakter)</label> 
    <input type="text" class="form-control" id="headline" name="headline" maxlength="25" required> 
    </div> 

    <div class="form-group has-feedback"> 
    <label for="minSalary">Maaş Alt Sınırı</label> 
    <input type="number" class="form-control" id="minsalary" name="minsalary" required> 
    </div> 
     <div class="form-group has-feedback"> 
    <label for="maxSalary">Maaş Üst Sınırı</label> 
    <input type="number" class="form-control" id="maxsalary" name="maxsalary" required> 
    </div> 
     <div class="form-group has-feedback"> 
    <label for="currency">Para Birimi</label> 
    <select class="form-control" id="currency" name="currency"> 
     <c:forEach var="currency" items="${currencies}"> 
      <option name="currency" value=${currency.currencyid}>${currency.currencydescription} </option> 
     </c:forEach> 
    </select> 
    </div> 
    <div class="form-group has-feedback" > 
    <label for="city">Şehir</label> 
    <select class="form-control" id="city" name="city"> 
    <c:forEach var="city" items="${cities}"> 
      <option name="city" value=${city.plateno}>${city.name} </option> 
    </c:forEach> 
    </select> 
    </div> 
    <div class="form-group has-feedback"> 
    <label for="worktype">İş tipi</label> 
    <select class="form-control" id="worktype" name="worktype"> 
     <c:forEach var="worktype" items="${worktypes}"> 
      <option name="worktype" value=${worktype.worktypeid}>${worktype.name} </option> 
    </c:forEach> 
    </select> 
    </div> 
<div class="col-md-6 text-center"> 
      <input type="file" name="resim" id="resim" accept="image/*"/> 
     </div> 
</div> 

       <div class="col-md-6" > 
     <div class="form-group has-feedback"> 
    <label for="freetext">İş Tanımı</label> 
    <textarea class="form-control" style="height: 300px;" id="freetext" name="freetext"></textarea> 
    </div> 


     <button type="submit" style="float: right; " class="btn btn-info ">Kaydı oluştur</button> 
     </div> 
     </div>   
     </div>  


</div> 
</div> 
      </form> 

は、私はまた、ファイルの拡張子を検証するためのjavascriptを持っている:

<script> 

$("#createadform").submit(function(e){ 

     e.preventDefault(); 
     var resim = $('resim'); 
     var headline = $('headline'); 
     var minsalary = $('minsalary'); 
     var maxsalary = $('maxsalary'); 
     var currency = $('currency'); 
     var city = $('city'); 
     var worktype = $('worktype'); 
     var freetext = $('freetext'); 

     if ($('#resim').hasExtension(['.jpg', '.jpeg', '.bmp', '.gif', '.png'])) { 
     this.submit(); 
}else{ 
    alert("Seçeceğiniz resim için 'jpg, jpeg,bmp,gif ve png' formatlarını kullanabilirsiniz."); 
} 

}); 
</script> 

私のサーブレットコード:

response.setContentType("text/html;charset=UTF-8"); 
      response.setCharacterEncoding("UTF-8"); 
      request.setCharacterEncoding("UTF-8"); 

Part resim = request.getPart("resim"); 
      InputStream is = resim.getInputStream(); 
      String resimFilename = FileUtilities.getFileName(resim); 
      String headline = request.getParameter("headline"); 
      String freetext = request.getParameter("freetext"); 
      System.out.println("FREETEXT in servlet : " + freetext); 
      int minsalary = Integer.parseInt(request.getParameter("minsalary")); 
      int maxsalary = Integer.parseInt(request.getParameter("maxsalary")); 
      int currencyId = Integer.parseInt(request.getParameter("currency")); 
      int cityId = Integer.parseInt(request.getParameter("city")); 
      int worktype = Integer.parseInt(request.getParameter("worktype")); 
      Person user = (Person) request.getSession().getAttribute("user"); 
      int employeeId = user.getPersonid(); 

私は、スタンドアロンに次のプロパティを追加しました。 xmlファイル:

<system-properties> 
     <property name="org.apache.coyote.http11.Http11Protocol.COMPRESSION" value="on"/> 
     <property name="org.apache.catalina.connector.URI_ENCODING" value="UTF-8"/> 
    <property name="org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING" value="true"/> 
    </system-properties> 

その後、私はこれらのプロパティをファイルの最後に移動し、jbossはその時間を開始できませんでした。

export JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.connector.URI_ENCODING=\"UTF-8\" \ 
        -Dorg.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING=\"true\"" 

EDIT 1:

はまた、私は.openshiftでpre_start_jbossas-7ファイル\フォルダをaction_hooks、その中に以下の行を追加して作成している私も、このソリューションを試してみました

を、それはなかったのいずれかの仕事。

Not able to set options in JAVA_OPTS in JBoss openshift

EDIT 2:

私はアクションフックスクリプトのセクションを読み、それらを実行可能にし、再び展開しようとした、まだ私は問題を解決したいと思っていた

答えて

2

を働いていません誰かが同じ問題の答えを探している場合に備えて、ここにログインしてください。

まず、multipart-form-dataについて問題がありました。 Eventhoughサーブレット3.0 apiがパラメータを取得するようにしました

request.getParameter("parameterName") 

サーブレットがUTF-8形式の文字列を取得できません。 したがって、私はこの行を以下の行で変更しました。これはcharmのように機能します。

Part partname= request.getPart("parameterName"); 
InputStream is= partname.getInputStream(); 
String parameter = IOUtils.toString(is, "UTF-8"); 
関連する問題