English 中文(简体)
Java信息论坛的好处
原标题:Benefits of MessageFormat in Java
  • 时间:2009-10-14 15:39:11
  •  标签:

在“Stuts2”网络应用中,我有这一条码:

try {
    user = findByUsername(username);
} catch (NoResultException e) {
    throw new UsernameNotFoundException("Username  " + username + "  not found!");
}

我的教师希望我把 throw言变成这样的东西:

static final String ex = "Username  {0}  not found!" ;
// ...
throw new UsernameNotFoundException(MessageFormat.format(ex, new Object[] {username}));

但我看不出在这种情况下使用电文。 这样做比简单地划定界限要好些什么? 正如JDK的“电文”计划所述:

信息论坛提供了一种手段,以不偏重语言的方式制作压缩信息。 利用这一手段为终端用户制作信息。

我怀疑终端用户会看到这一例外,因为只有在申请记录上才能显示这一例外,而且我对网络应用有习惯错误的网页。

我是否应该改变法典的行文,还是与现在的相左?

最佳回答

www.un.org/Depts/DGACM/index_french.htm

根据你的教师,你应当这样做。

也许,他想要你们为同样的事情学习不同的方法。

虽然在你提供的样本中,它没有多少意义,但在使用其他类型的信息或用于i18n时将是有益的。

想:

String message = ResourceBundle.getBundle("messages").getString("user.notfound");

throw new UsernameNotFoundException(MessageFormat.format( message , new Object[] {username}));

页: 1

第一项内容是:

user.notfound=Username  {0}  not found!

其次是:

user.notfound=¡Usuario  {0}  no encontrado!

那么,这就会有意义。

http://java.sun.com/javase/6/docs/api/java/text/MessageFormat.html

 MessageFormat form = new MessageFormat("The disk "{1}" contains {0}.");
 double[] filelimits = {0,1,2};
 String[] filepart = {"no files","one file","{0,number} files"};
 ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);
 form.setFormatByArgumentIndex(0, fileform);

 int fileCount = 1273;
 String diskName = "MyDisk";
 Object[] testArgs = {new Long(fileCount), diskName};

 System.out.println(form.format(testArgs));

具有不同价值的产出:

 The disk "MyDisk" contains no files.
 The disk "MyDisk" contains one file.
 The disk "MyDisk" contains 1,273 files.

因此,也许你的教师让你们知道你们有的可能性。

问题回答

教师方式使地方化更为容易,因为你可以选择单一体,而不是几个小点。

But I don t see the point of using MessageFormat in this situation

在<>特定<>情况下,它不肯购买你。 一般而言,使用电文使你能够把这些信息输入档案。 允许:

  • localize the messages by language
  • edit the messages outside without modifying source code

我本人将坚持分界线,但这只是一个偏好问题。 有些人认为,用变数书写体比较清洁,然后将斜体作为插图后的清单。 在座各位的变数越多,使用电文的含义越大,但你只拥有这种变数,因此不会产生巨大差异。

当然,如果你不需要国际化,那是间接费用,但基本是《守则》,因为教导人希望《守则》更具“国际性”。

由于这是一个教学情况,尽管他可以这样做,只是要告诉你如何使用这些课程,而不是为这一具体例子制定方案的最佳方式。

就方案的最佳方式而言,如果国际化是一项要求,那么,如果不是这样的话,你需要为之制定法规。 我只是增加间接费用和时间(撰写法典)的原因。

在其他答复中,电文对国际集约的重要性不仅使对外档案更容易提供。 在其他语文中,在电文的句结构中,参数的位置可能有所不同,因此,使用电文使你能够改变每种语文的位置,但这种说法并不明显。

在使用<代码>MessageFormat时,我看到的一个好处是,当你决定externalize时,打上电文会更容易些,而且,看到“Uname{0} 而不是”你在资源档案中只看到一个电离心。





相关问题
热门标签