显示struts验证消息

时间:2012-01-18 14:29:05

标签: java struts struts-1 struts-validation

我想显示在动作类中检测到的错误,我使用:

errors.add(ActionErrors.GLOBAL_MESSAGE,
  new ActionMessage("some_string_in_properties_file"));`

它工作正常。但是,我写了一些通用错误消息,我想重用它们,所以我试图这样做:

errors.add(ActionErrors.GLOBAL_MESSAGE,
  new ActionMessage("string1_in_properties_file", "string2_in_properties_file"));

其中string1 = <li>{0} is required.</li>

然后显示string2 is required。它没有用它的值替换string2。

我甚至尝试过

errors.add(ActionErrors.GLOBAL_MESSAGE,
  new ActionMessage("string1_in_properties_file",
  new ActionMessage("string2_in_properties_file")));

然后显示string2[] is required。它不会取代string2。

我知道可以通过对值进行硬编码来完成,但还有其他方法吗?

4 个答案:

答案 0 :(得分:2)

由于您想从Property文件中获取两个键的值,并将其放在全局错误键中, 我会说,使用

分别检索每个值
String sValue1 = getResources(request).getMessage(locale, "key1");
String sValue2 = getResources(request).getMessage(locale, "key2");

然后将其置于您的全局错误

errors.add(ActionErrors.GLOBAL_MESSAGE,sValue1+"<br/>"+sValue2);

希望它有所帮助....

答案 1 :(得分:0)

很难告诉你到底要做什么,因为O不知道errorsActionMessage背后的代码。但是,您可以使用String.format。您的代码看起来像这样

public class ActionErrors {
    public static final String INVALID_INPUT "'%s' is not valid input.";
    ...
}

String input = "Cats";
String message = String.format(ActionErrors.INVALID_INPUT, input);
System.out.println(message);

以上将打印

  

'猫'无效输入。

答案 2 :(得分:0)

在Struts ActionMessage中,您可以为属性文件中指定的参数{0}{1}{2}{3}指定值,如下所示:

errors.add(ActionErrors.GLOBAL_MESSAGE,
  new ActionMessage("some_string_in_properties_file", "value1"));

可替换地:

errors.add(ActionErrors.GLOBAL_MESSAGE,
  new ActionMessage("some_string_in_properties_file", "value1", "value2", "value3"));

value1 .. value3可以是任何类型(因为Struts期望Object)。

所以你的财产:

string1 = <li>{0} is required.</li>

将被替换为:

<li>value1 is required.</li>

(如果您将密钥指定为string1)。

答案 3 :(得分:0)

假设您有一个属性文件,用于定义消息的某些键,如下所示:

string1: <li>{0} is required.</li>
string2: Username

ActionMessage类有许多构造函数,它们使用不同数量的参数。第一个是表示引用消息的键的字符串 - 在您的情况下,键是string1,对应于消息<li>{0} is required.</li>; {0}是一些动态内容的占位符。

其余可能的参数是表示要替换这些占位符的实际值的对象。如果您执行new ActionMessage("string1", "string2"),则传递的是字面值string2,最终会得到<li>string2 is required.</li>的输出。

您需要做的是使用方法调用替换"string2",该方法调用将获得与键string2对应的值。这是我对这个问题的了解很快的地方,所以你需要自己做一些这方面的研究。