2011-11-08 13 views
0

これは基本的なことです。Struts2 freemarkerはフォームフィールドを提出していません

okが、ここに私のFreeMarkerのページが

bla bla bla 
<form name="message" action="[@s.url action="login"/]" onsubmit="return detectJavaScript();" method="post"> 
    <fieldset> 
     <legend>To begin, type your Graduation Report ID and password</legend> 
     <ol> 
      <li> 
       [@requiredInstruction /] 
       <label for="username" accesskey="U"> 
        [@requiredField /] <strong>Graduation Report ID:</strong> 
       </label> 
       <input id="username" name="username" size="10" tabindex="1" type="text" value="${username!''}" 
        [@errorStyle show=(fieldErrors?exists && fieldErrors["username"]?exists)/] /> 
       [@showFieldError field="username" /] 
      </li> 
      <li> 
       <label for="password" accesskey="P"> 
        [@requiredField /] <strong>Password:</strong> 
       </label> 
       <input id="password" name="password" size="10" tabindex="2" type="password" value="${password!''}" 
        [@errorStyle show=(fieldErrors?exists && fieldErrors["password"]?exists)/] /> 
       [@showFieldError field="password" /] 
      </li> 
bla bla bla 

と私のアクションクラス

public class SubmitLoginAction { 
    public String username; 
    public String password; 


    private static Logger logger = Logger.getLogger(SubmitLoginAction.class); 

    public void validate() { 
     logger.debug("validate fired"); 

     logger.debug("username returned: " + username); 
     logger.debug("password returned: " + password); 

だと私のストラットが

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE struts PUBLIC 
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
    "http://struts.apache.org/dtds/struts-2.0.dtd"> 

<struts> 
    <!-- <include file="com/paritysys/util/struts.xml" /> --> 

    <constant name="struts.url.includeParams" value="none" /> 
    <constant name="struts.action.extension" value="html,action" /> 

    <package name="public" extends="struts-default"> 
     <interceptors> 
      <interceptor name="websiteOnline" 
       class="parity.action.website.OnlineInterceptor" /> 
      <interceptor name="websiteLogin" 
       class="parity.action.website.LoginInterceptor" /> 

      <interceptor-stack name="appStack"> 
       <interceptor-ref name="validation"> 
        <param name="excludeMethods">input,back,cancel,browse</param> 
       </interceptor-ref> 
       <interceptor-ref name="workflow"/> 
       <interceptor-ref name="modelDriven"/> 
       <!-- <interceptor-ref name="paritySessionStack"/> --> 
       <interceptor-ref name="websiteOnline" /> 
       <interceptor-ref name="websiteLogin" /> 
      </interceptor-stack> 
     </interceptors> 

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

     <global-results> 
      <result name="login" type="redirectAction"> 
       <param name="actionName">index</param> 
      </result> 
      <result name="exception" type="freemarker">/public/error.html.ftl</result> 
      <result name="error" type="freemarker">/public/error.html.ftl</result> 
      <result type="freemarker" name="maintenance">/public/maintenance.html 
      </result> 
      <result type="freemarker" name="pre-offline">/public/pre-offline.html 
      </result> 
      <result type="freemarker" name="post-offline">/public/post-offline.html 
      </result> 
     </global-results> 

     <action name="index" class="parity.action.website.LoginAction"> 
      <result type="freemarker" name="success">/public/index.html.ftl</result> 
     </action> 

     <action name="login" class="parity.action.website.SubmitLoginAction"> 
      <result type="freemarker" name="success">/public/questionnaire.html.ftl 
      </result> 
      <result type="freemarker" name="input">/public/index.html.ftl</result> 
     </action> 

     <action name="submit" class="parity.action.website.SubmitQuestionnaireAction"> 
      <result type="freemarker" name="success">/public/thanks.html.ftl 
      </result> 
      <result type="freemarker" name="input">/public/questionnaire.html.ftl 
      </result> 
     </action> 

     <action name="whereIsMyId" class="parity.action.website.LoginAction"> 
      <result type="freemarker" name="success">/public/whereIsMyId.html.ftl 
      </result> 
     </action> 

     <action name="loadCollegeFinder" class="parity.action.website.LoadCollegeFinderAction"> 
      <result type="freemarker" name="success">/public/college_finder.html.ftl 
      </result> 
     </action> 

     <action name="findCollege" class="parity.action.website.FindCollegeAction"> 
      <result type="freemarker" name="success">/public/college_finder.html.ftl 
      </result> 
      <result type="freemarker" name="input">/public/college_finder.html.ftl 
      </result> 
     </action> 
    </package> 
</struts> 

ファイルに関係なく、私は何をすべきか、それがためにnullを返し続けませんユーザーとパス。ゲッターやセッターで試してみると、何も動かないようです。

私はこれがストラット付きの箱のものだと思っていました。

答えて

0

それはあなたですが、あなたはそれを箱から取り出し、その周りのビットをシャッフルしました。

デフォルトのインターセプタスタックから "params"インターセプタを削除しました。 "params"インターセプタはアクションのパラメータを設定するものです。私はmy answer to your previous postにそれを言いました。 (「FreeMarkerのを」入力しておく必要をなくすとともに。)

それは動作しますが、(サイドノートでは、私は本当にStruts--のバージョンに応じて、パブリックプロパティをお勧めしません。 OGNLバージョンのバンプのIIRCの1つがそれを変更しました。)

+0

確かに、私はそのポストを読み直して、私が何をしたかを理解しました。私はインターセプタを再構築し、strutsのデフォルトを追加しました。私が気づいていなかった部分を持ってきたのは、オンラインで働いていない(または存在していない)ということです。実際には面白いです。これは既存のプロジェクトの変更ですので、以前のベンダーと同じデザインスタイルに従わなければなりません。私はこの事を取り除き、バックエンドを見直すまで待つことができません。 – scphantm

+0

@scphantm沢山の(大部分の)機能がインターセプタに包まれています - 私が私が思っていたことをしていることを確認するために、 –

関連する問題