Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java struts2动作映射配置_Java_Struts2_Struts2 Namespace - Fatal编程技术网

Java struts2动作映射配置

Java struts2动作映射配置,java,struts2,struts2-namespace,Java,Struts2,Struts2 Namespace,我在gae上试用struts2中的一个简单应用程序,但在提交表单时遇到了问题 struts.xml文件 <package name="auth" extends="struts-default" namespace="/auth"> <default-interceptor-ref name="defaultStack"/> <action name="signup" class="signup" method="signup">

我在gae上试用struts2中的一个简单应用程序,但在提交表单时遇到了问题

struts.xml文件

<package name="auth" extends="struts-default" namespace="/auth">
    <default-interceptor-ref name="defaultStack"/>
    <action name="signup" class="signup" method="signup">
      <result name="success">/auth/signup.jsp</result>
    </action>
    <action name="postSignup" class="signup" method="create">
      <result name="input">/auth/signup.jsp</result>
    </action>
    <action name="signupConfirm" class="signup" method="signupConfirm"></action>

    <action name="resendCode" class="signup" method="resendCode"/>
</package>
同样从这个页面,如果我再次简单地点击/auth/signup.html,它会给出以下错误-

Problem accessing /auth/signup.html. Reason:

    No result defined for action com.tutorial.action.auth.SignUpAction and result input
对于“注册”操作,我不需要在conf中输入,因为我将只显示注册表单。除“postSignup”方法外,我还在每个方法上添加了注释
@SkipValidation
。我不熟悉struts2。从struts1迁移。我需要帮助。还有,如何更好地组织struts配置?谢谢

这是jsp

  <s:form action="postSignup" cssClass="well" namespace="/auth" method="POST">
    <fieldset>
      <div class="control-group">
        <label class="control-label" for="userName">UserName</label>
        <div class="controls">
          <s:textfield cssClass="input-large" id="userName" name="userForm.userName"/>
          <span class="help-inline">Choose a username</span>
        </div>
      </div>
      <div class="control-group">
        <label class="control-label" for="password1">Password</label>
        <div class="controls">
          <s:password cssClass="input-large" id="password1" name="userForm.password1"/>
          <span class="help-inline">Enter your Password</span>
        </div>
      </div>
      <div class="control-group">
        <label class="control-label" for="password2">Confirm Password</label>
        <div class="controls">
          <s:password cssClass="input-large" name="userForm.password2" id="password2"/>
          <span class="help-inline">Confirm above password</span>
        </div>
      </div>
      <div class="control-group">
        <label class="control-label" for="email">Email Address</label>
        <div class="controls">
          <s:textfield cssClass="input-large" id="email" name="userForm.email"/>
          <span class="help-inline">Enter your Email Address</span>
        </div>
      </div>
      <div class="form-actions">
        <s:submit name="action" id="action" value="SignUp" cssClass="btn btn-primary"/>
      </div>

    </fieldset>
  </s:form>

用户名
选择一个用户名
密码
输入您的密码
确认密码
确认以上密码
电子邮件地址
输入您的电子邮件地址

如果您再次点击auth页面,仍然看到表单错误,这意味着您正在使用Springbean的默认“singleton”作用域。操作应该是“原型”范围,即根据请求创建

字段错误的问题是不可能解决的,因为除了添加字段错误之外,我看不到任何与此相关的内容。您必须同时包含操作和JSP信息


关于配置文件的“更好的组织”,如果没有进一步的信息,就不可能知道您的意思。如何组织?你的东西怎么了?您喜欢什么?

谢谢“范围=原型”成功。我已经包含了jsp。通过组织,我的意思是像struts1一样,我每个动作只有一个形态。我希望通过保持我的uri不变(即“/auth/signup”)来实现同样的目标,并且应该根据一些参数调用不同的方法。或者可能类似于get的“auth/signup”和post的“auth/signup/create”。这可能吗?@Shwetanka您可以使用通配符映射,在本例中,通配符映射可能是可以的。在不了解更多设置的情况下,我猜您使用的是“简单”主题,或者是手动滚动主题,因为默认的“xhtml”主题会让您的HTML变得疯狂。“简单”主题不包含错误消息(因为它很简单)。
  <s:form action="postSignup" cssClass="well" namespace="/auth" method="POST">
    <fieldset>
      <div class="control-group">
        <label class="control-label" for="userName">UserName</label>
        <div class="controls">
          <s:textfield cssClass="input-large" id="userName" name="userForm.userName"/>
          <span class="help-inline">Choose a username</span>
        </div>
      </div>
      <div class="control-group">
        <label class="control-label" for="password1">Password</label>
        <div class="controls">
          <s:password cssClass="input-large" id="password1" name="userForm.password1"/>
          <span class="help-inline">Enter your Password</span>
        </div>
      </div>
      <div class="control-group">
        <label class="control-label" for="password2">Confirm Password</label>
        <div class="controls">
          <s:password cssClass="input-large" name="userForm.password2" id="password2"/>
          <span class="help-inline">Confirm above password</span>
        </div>
      </div>
      <div class="control-group">
        <label class="control-label" for="email">Email Address</label>
        <div class="controls">
          <s:textfield cssClass="input-large" id="email" name="userForm.email"/>
          <span class="help-inline">Enter your Email Address</span>
        </div>
      </div>
      <div class="form-actions">
        <s:submit name="action" id="action" value="SignUp" cssClass="btn btn-primary"/>
      </div>

    </fieldset>
  </s:form>