gpt4 book ai didi

java - struts2 Action 映射配置

转载 作者:行者123 更新时间:2023-12-02 07:37:58 25 4
gpt4 key购买 nike

我正在 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>

我正在使用 spring 来加载操作。

当我点击 url/auth/signup.html 时,我会得到正确的注册页面。现在,在提交表单后,如果表单验证失败(我在操作中通过验证方法执行此操作)。它让我回到同一个jsp。现在的主要问题是:即使我在验证方法中添加了 fielderror 并且我在表单中使用了 struts 标签,我也看不到错误。

 @Override
public void validate() {

if(!StringUtil.isValidUserName(userForm.getUserName())){
addFieldError("userForm.userName", "Invalid username format");
}else {
TutorUser user = this.userBc.getUserByUserName(userForm.getUserName());
if(user!=null){
addFieldError("userForm.userName", "Username already exist. Please choose a different one.");
}
}
if(!StringUtil.isEmail(userForm.getEmail())){
addFieldError("userForm.email", "Invalid email provided");
}
if(StringUtil.isBlank(userForm.getPassword1()) || StringUtil.isBlank(userForm.getPassword2()) ||
!userForm.getPassword1().equals(userForm.getPassword2())) {
addFieldError("userForm.password2", "Passwords do not match");
}
}

此外,如果我再次点击/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>

最佳答案

如果您再次访问身份验证页面,但仍然看到表单错误,则意味着您正在使用 Spring bean 的默认“单例”作用域。操作应该是“原型(prototype)”范围,即根据请求创建。

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

关于配置文件的“更好的组织”,如果没有进一步的信息,就不可能知道你的意思。怎么组织?你有什么问题吗?你想要什么?

关于java - struts2 Action 映射配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11942627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com