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を返し続けませんユーザーとパス。ゲッターやセッターで試してみると、何も動かないようです。
私はこれがストラット付きの箱のものだと思っていました。
確かに、私はそのポストを読み直して、私が何をしたかを理解しました。私はインターセプタを再構築し、strutsのデフォルトを追加しました。私が気づいていなかった部分を持ってきたのは、オンラインで働いていない(または存在していない)ということです。実際には面白いです。これは既存のプロジェクトの変更ですので、以前のベンダーと同じデザインスタイルに従わなければなりません。私はこの事を取り除き、バックエンドを見直すまで待つことができません。 – scphantm
@scphantm沢山の(大部分の)機能がインターセプタに包まれています - 私が私が思っていたことをしていることを確認するために、 –