0

Struts2 で基本的なアプリケーションを作成しようとしています。

私の問題は、パラメーターが Xworks によって変換されないことです。アクション属性 (idParticipant) は文字列ですが、パラメーターは配列² です。確か、XWorkはアクション実行前に基本パラメータを変換するはずですよね?

私のjsp:

<s:form action="afficher_participant">
  <s:hidden name="idParticipant" value="4"></s:hidden>
  <s:submit>bob</s:submit>
</s:form>

私の行動:

package action;

import java.util.List;

import model.Participant;
import service.ParticipantService;
import service.ParticipantServiceImpl;

public class ParticipantAction extends BaseAction {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    private String idParticiPant;
    private List<Participant> listeParticipant;
    private Participant participant;

    private ParticipantService participantService = new ParticipantServiceImpl();

    public String getIdParticiPant() {
        return idParticiPant;
    }

    public void setIdParticiPant(String idParticiPant) {
        this.idParticiPant = idParticiPant;
    }

    public List<Participant> getListeParticipant() {
        return listeParticipant;
    }

    public void setListeParticipant(List<Participant> listeParticipant) {
        this.listeParticipant = listeParticipant;
    }

    public Participant getParticipant() {
        return participant;
    }

    public void setParticipant(Participant participant) {
        this.participant = participant;
    }

    /* Actions */

    public String lister() {
        participantService = new ParticipantServiceImpl();
        this.listeParticipant = participantService.lister();
        return "listerParticipant";
    }

    public String afficher() {
        if (idParticiPant == null) {
            return ERROR;
        }
        participantService = new ParticipantServiceImpl();
        participant = participantService.get(Integer.valueOf(idParticiPant));
        return "afficherParticipant";
    }
}

私の struts.xml :

<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <constant name="struts.devMode" value="true" />
    <constant name="struts.custom.i18n.resources" value="package" />
    <constant name="struts.i18n.encoding" value="UTF-8" />

    <package name="frontoffice" namespace="/" extends="struts-default">

        <default-interceptor-ref name="defaultStack"></default-interceptor-ref>

        <!-- Action de l'action de réference -->
        <default-action-ref name="index" />

        <!-- Navigation rules -->
        <action name="*_participant" class="action.ParticipantAction" method="{1}">
            <result name="success">jsp/listerParticipant.jsp</result>
            <result name="listerParticipant">jsp/listerParticipant.jsp</result>
            <result name="afficherParticipant">jsp/afficherParticipant.jsp</result>
            <result name="error">/index.jsp</result>
        </action>

    </package>
</struts>

最後に、送信時に例外が発生します:

    Unexpected Exception caught setting 'idParticipant' on 'class action.ParticipantAction: Error setting 
expression 'idParticipant' with value ['4', ]

おそらく単なる設定の問題であることはわかっていますが、間違いを見つけることができません。

ありがとう

4

1 に答える 1

1

次の 2 つのことがあります。

  1. これに変更<s:hidden name="idParticipant" value="%{'4'}"></s:hidden>
  2. パラメータの名前はidParticipantではなくにする必要がありますidParticiPant
于 2013-02-01T11:01:11.663 に答える