【问题标题】:struts2 configuration requires input?struts2 配置需要输入吗?
【发布时间】:2011-11-10 04:23:45
【问题描述】:

在我的项目中,我在struts.xml 中有这个配置

<action name="searchTracker" class="searchAction" method="searchTracker">
    <result name="success">/jsp/searchTracker.jsp</result>
    <result name="error">/jsp/searchTracker.jsp</result>
</action>

这是我在 searchAction Action 中的操作方法

public String searchTracker(){

this.clearErrorsAndMessages();

List<File> queryResults = fileManager.retrievequeryResults(patchNumBySearch); // patchNumBySearchis input from the page

if(queryResults == null){
    this.setTrackers(null);
    addActionError("This patch number doesn't exist. Please choose another one !");
    return ERROR;
}
    List<Tracker> trackers = commonUtils.convertToTrackers(queryResults);
    this.setTrackers(trackers);

}
    return SUCCESS;

}

如果我输入了错误的参数并且queryResult返回为NULL,页面searchTracker.jsp可以如我所愿正确显示错误信息,但在此之后,我输入正确的参数,它直接在下面显示错误

 "Errors on action com.harris.northstar.dbadesk.action.SearchTrackerAction@9bee3a, returning result name 'input'"

我刚刚比较了两种不同情况下的调试日志,发现只有一行不同

 "converter is null for property patchNumBySearch. Mapping size: 0"

如果此行存在,它将进入我的操作,如果不存在,它将进入询问输入结果的错误。线是什么意思?

还没有进入动作类。我知道原因是它违反了一些默认的验证拦截器并抛出了这个异常,但是我找不到这个带有正确参数的请求有什么问题。如果我首先输入正确的参数,它可以得到 queryResult 并毫无问题地进入 Success 结果。唯一不同的是时间。

我必须在配置xml中添加输入结果吗?我之前遇到过一些项目,他们只有成功和错误结果,根本没有输入结果,为什么它不起作用?我的 struts.xml 有问题吗?

而且我不想通过禁用 struts 默认验证拦截器来创建自己的拦截器

我刚刚找到了一种绕过它的方法。只需删除配置文件中的错误结果,只保留成功结果,并在方法 searchAction 中删除 AccionErrors,因此用户不会收到任何有关其查询请求的警告消息,只是在页面上不显示任何内容,但这种方式是次要选项。我仍然想通过解决这个问题来显示错误消息。

【问题讨论】:

  • 我已经解释过这也可能来自类型转换错误。我们不知道您在输入什么,我们不知道您在提交什么。您所能做的就是使用该框架来帮助您进行诊断。
  • 如果是类型转换错误,为什么我一开始输入正确的参数没有发生,只有输入错误的参数后输入正确的参数才会发生?
  • 您提供的信息无法回答这个问题。
  • 你是对的,当我提交正确的参数而不是先提交时,我只是用更详细的日志更新问题。
  • 如果没有您所采取的步骤的确切顺序、所涉及的操作和映射、您输入的数据以及操作属性声明,则无法提供帮助。

标签: validation struts2


【解决方案1】:

input 结果将在将控件转移到操作方法之前发生验证错误时调用。在这种情况下,我建议您为初始 jsp 定义一个结果类型 input,并尝试分别使用 &lt;s:fielderror /&gt;&lt;s:actionerror /&gt; 打印 fielderrors 和 actionerros。这将为您提供更好的前景,您将了解如何在下一步中根据错误类型处理此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多