5

Struts 1 アプリを Struts2 に移行し、必要なコード変更を最小限に抑えようとしています。

ActionFormStruts2Actionクラスでにアクセスする方法を知る必要があります。以下は私の現在のコードで、にアクセスしようとすると NPE が発生しますActionForm

Public class DeptBuildingNewAction extends ActionSupport 
implements ServletRequestAware, ServletResponseAware,  ModelDriven<DeptBuidingFormBean> {

private HttpServletRequest request;
private HttpServletResponse response;
private DeptBuidingFormBean form;

public void setServletRequest(HttpServletRequest httpServletRequest) {
    this.request = httpServletRequest;
}

public void setServletResponse(HttpServletResponse httpServletResponse) {
    log.debug("Inside setServletResponse");
    this.response = httpServletResponse;
}

public DeptBuidingFormBean getModel() {
    log.debug("Inside getForm");
    return form;
}

public void setModel(DeptBuidingFormBean form) {
    log.debug("Inside setForm");
    this.form = form;
}

ActionFormここに到達するための最良の方法は何ですか?

4

1 に答える 1

1

NPE を防ぐために、フォーム (Struts2 のモデル) を初期化する必要があります。

private DeptBuidingFormBean form = new DeptBuidingFormBean();

ModelDrivenアクションを使用すると、ビュー レイヤー上のモデルにアクセスし、 から直接、つまり接頭辞valueStackなしで、動作中のモデルにアクセスできます。modelform

modelDrivenインターセプターは、アクションのインターセプター スタックにある必要があります。デフォルトのスタックには、このインターセプターが含まれています。

ドキュメントから:

注:は、モデルが でないModelDrivenInterceptor場合にのみモデルをスタックにプッシュします。それ以外の場合は無視されます。null

アクション クラスには、内部で使用できるフィールドがあります。

于 2014-12-16T10:31:03.047 に答える