2

struts2 で顧客型コンバーターを定義する方法を示すデモを入手しました。デモはとても簡単です。ユーザーの名前と年齢を表す文字列「Tom,12」を入力します。値はユーザー オブジェクトに配置されます。そしてコンソールはこれらの値を出力します。以下はコードです: JSP:

   <form action=testconvert method="post">
      Please enter your name<br/>
      <input type="text" name="user"/>
      <input type="submit" value="test"/>
   </form>

UserConverter: これはユーザー定義のコンバーターです。

public class UserConverter extends DefaultTypeConverter {
    @Override
    public Object convertValue(Map context, Object value, Class toType) {

        System.out.println("convertValue");
        if(User.class == toType)  
        {

            String[] str = (String[])value;
            String firstValue = str[0];

            System.out.println(firstValue);

            StringTokenizer st = new StringTokenizer(firstValue, ",");

            String username = st.nextToken();
            int age =Integer.parseInt( st.nextToken());

            User user = new User();

            user.setUsername(username);
            user.setAge(age);

            return user;        
        }
        else if(String.class == toType) 
        {
            User user = (User)value;

            String username = user.getUsername();
            int age = user.getAge();

            String userInfo = "username: " + username + ", age: " + age;

            return userInfo;
        }
        return null;
    }

}

「testconvert-conversion.properties」という名前のプロパティ ファイルがあります。

user=com.tutorialspoint.sconvert.UserConverter

アクション ファイル:

public class testconvert extends ActionSupport
{
    private User user;

    public User getUser()
    {
        System.out.println("getUser");
        return user;
    }

    public void setUser(User user)
    {
        System.out.println("setUser");
        this.user = user;
    }

    @Override
    public String execute() throws Exception
    {
        System.out.println("username: " + user.getUsername());
        System.out.println("age: " + user.getAge());

        System.out.println("execute");
        return SUCCESS;
    }
}

値を送信すると: "Tom,20" 、コンテンツの下のコンソール出力:

WARNING: Parameter [user] is not on the excludeParams list of patterns and will be appended to action!

convertValue
Tom,20
setUser
username: Tom
age: 20
execute

警告がありますが、必要なものを出力できます。次に、JSP ファイルを変更します。以下のようにコードを変更します。

<input type="text" name="user222"/>

入力タグの名前は重要ではないと思います。しかし、私は間違っています。出力が正しく得られません。

私の質問は次のとおりです
。1、警告の意味は何ですか?

<input>2、名前をuser222にしたい場合はどうすればよいですか?

4

1 に答える 1

0

アクション クラスのプロパティ名に依存しないコンバーターを使用する場合は、アプリケーション全体のコンバーターを定義する必要があります。xwork-conversion.propertiesこれは、クラスパスのルートにあるファイルで行われます。

your_package.User = com.tutorialspoint.sconvert.UserConverter
于 2013-03-25T10:22:29.857 に答える