2

次のように、変数と変数を持つという名前のActionクラスがあります。MyFirstClassStringUser

public class MyFirstClass extends ActionSupport implements ModelDriven<User>,Preparable {

    User user;
    
    private String nickName;

    public void prepare(){
       user = new User();       
    }

    public User getModel(){
       return user;
    }
    .........................
    ........................    
}

UserクラスにはとのString変数がuserNameありuserAgeます。

私のActionクラスはインターフェイスを実装しているため、クラスModelDrivenの変数はUserリクエストで取得/設定する必要があります。

次のように設計されたJSPファイルもあります。

<s:form action="index">
<s:actionerror/>
<s:textfield name="myname" label="UserName:">
</s:textfield>
<s:textfield name="myage" label="UserAge:">
</s:textfield>
<s:submit key="submit" name="submit"/>
</s:form>

次のようにstruts.xml設計されています。

<package name="default" namespace="/" extends="struts-default">
        <action name="index" class="com.actionClasses.MyFirstClass">
            <param name="aliases">#{'myname':'nickName','myname':user.userName,'myage':user.age}</param>
            <interceptor-ref name="alias"/> 
            <interceptor-ref name="basicStack"/>        
            <result name="success">/success.jsp</result>
            <result name="input">/user.jsp</result>                
        </action>
</package>

私の問題は次のとおりです。

UserJSP ページのテキスト フィールドの名前がクラスのプロパティ名と一致しないためです。aliasこのように、インターセプターを使用してアクションの対応するプロパティに要求パラメーターを設定することはできません。

4

1 に答える 1

1

プロパティ名と一致するようにエイリアスの構成を変更します。また、interceptordefaultStackが含まれているため、必要に応じて使用します。modelDriven

あなたが述べた

Userclass には、 および として String 変数がuserNameありuserAgeます。

フォームが

ユーザー.jsp:

<s:form action="index">
<s:actionerror/>
<s:textfield name="name" label="UserName:">
</s:textfield>
<s:textfield name="age" label="UserAge:">
</s:textfield>
<s:submit key="submit" name="submit"/>
</s:form>

結果は

success.jsp:

<s:actionerror/>
<s:label name="userName" label="UserName:"/><br/>
<s:label name="userAge" label="UserAge:"/><br/>

構成は次のとおりです。

<package name="default" namespace="/" extends="struts-default">
    <action name="index" class="com.actionClasses.MyFirstClass">
        <param name="aliases">#{'name':'userName','age':'userAge'}</param>
        <interceptor-ref name="defaultStack"/>        
        <interceptor-ref name="alias"/> 
        <result name="success">/success.jsp</result>
        <result name="input">/user.jsp</result>                
    </action>
</package>

aliasインターセプターはの後にある必要があるため、最後にありますmodelDriven

于 2013-11-30T17:11:54.257 に答える