Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Javaでも。
[go: Go Back, main page]

■Wicket version1.1 - Wicket で日本語その1

Wicket で日本語を扱う

日本人はやっぱ日本語でしょ!
ということで、今回は Wicket で日本語。お気楽編です。

一番簡単に日本語対応するには次の 2 つを実行する。

理由は Wicket がリクエストとレスポンスに対してデフォルトでセットするエンコーディングが UTF-8。
そういう訳でレイアウト html のエンコーディングもあわせてやるとうまく行く次第。

サンプルコード

今回作ったサンプルコードの一覧。

ということでまずは SampleWebApp.java。
いつも通りのお決まりパターンです。

package javademo.wicket;

import javademo.wicket.usingjp.Utf8WebPage;
import wicket.protocol.http.WebApplication;

public class SampleWebApp extends WebApplication {

    public SampleWebApp(){
        getPages().setHomePage(Utf8WebPage.class);
    }
}

次、Utf8WebPage.java。
メッセージ表示のための FeedbackPanel と TextField を持つ Form を追加しています。

package javademo.wicket.usingjp;

import wicket.markup.html.WebPage;
import wicket.markup.html.form.Form;
import wicket.markup.html.form.TextField;
import wicket.markup.html.panel.FeedbackPanel;
import wicket.model.CompoundPropertyModel;

public class Utf8WebPage extends WebPage {

    public Utf8WebPage(){
        
        final InputData inputData = new InputData();
        
        FeedbackPanel pnlFeedback = new FeedbackPanel("feedback");
        add(pnlFeedback);
        
        Form form = new Form("form"){
            public void onSubmit(){
               info(inputData.toString());
            }
        };
        form.setModel(new CompoundPropertyModel(inputData));
        form.add(new TextField("text01"));
        add(form);
        
        
    }
    
    /**
     * 入力データを格納するクラス
     */
    public class InputData{
        public String text01;
        
        public String toString(){
            return "TextField is '" + text01 + "'";
        }
    }
}

Utf8WebPage.html。
ポイントは 1 行目のエンコーディング指定。
加えてファイルを保存するときに UTF-8 で保存が必須。

<?xml version="1.0" encoding="UTF-8"?>
<html>
<body>
<form wicket:id="form">
日本語を入力してください→<input wicket:id="text01" type="text"><br>
<input type="submit" value="押す!">
</form>
<span wicket:id="feedback">feedbackmessages will be put here</span>
</body>
</html>

最後は web.xml。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
      PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
      "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
    <display-name>Wicket Examples</display-name>
    <servlet>
        <servlet-name>SampleApp</servlet-name>
        <servlet-class>wicket.protocol.http.WicketServlet</servlet-class>
        <init-param>
          <param-name>applicationClassName</param-name>
          <param-value>javademo.wicket.SampleApp</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>SampleApp</servlet-name>
        <url-pattern>/sample</url-pattern>
    </servlet-mapping>
</web-app>

まとめ

てっとり早く Wicket で日本語を扱うときのポイントまとめ。

  1. Wicket がデフォルトでリクエストとレスポンスに設定するエンコーディングは UTF-8。
  2. レイアウトの html のエンコーディングを UTF-8 にする。