小编Pet*_*ton的帖子

我应该将java.text.MessageFormat用于没有占位符的本地化消息吗?

我们正在为在Java 5上运行的Web应用程序本地化用户界面文本,并且我们如何输出在属性文件中定义的消息(java.util.Properties使用的类型)的困境.

某些消息包含将使用java.text.MessageFormat填充的占位符.例如:

search.summary = Your search for {0} found {1} items.
Run Code Online (Sandbox Code Playgroud)

MessageFormat很烦人,因为单引号是一个特殊字符,尽管在英文文本中很常见.您必须输入两个文字单引号:

warning.item = This item''s {0} is not valid.
Run Code Online (Sandbox Code Playgroud)

但是,应用程序1000个左右的消息中有四分之三不包含占位符.这意味着我们可以直接输出它们,避免使用MessageFormat,并保留单引号:

help.url = The web page's URL
Run Code Online (Sandbox Code Playgroud)

问题:我们应该为所有消息使用MessageFormat,以获得一致的语法,还是尽可能避免使用MessageFormat,因此大多数消息都不需要转义?

无论哪种方式都有明显的优点和缺点.

请注意,MessageFormat的API文档确认了该问题,并提出了一个非解决方案:

遗憾的是,在消息格式模式中使用引号的规则显示有些令人困惑.特别是,对于本地化者来说,单引号是否需要加倍并不总是显而易见的.确保通知本地化程序有关规则,并告诉他们(例如,通过使用资源包源文件中的注释)MessageFormat将处理哪些字符串.

java localization messageformat

11
推荐指数
1
解决办法
5997
查看次数

如何在play框架中的会话中存储对象(不是字符串)?

我有一个学校项目,我必须使用Java.最近我找到了play框架,我想尝试使用它.这很容易快速启动,但我遇到了会话问题.

就其本质而言是无状态的,play会在cookie中将整个会话发送给用户并在下一个请求时接收它,因此它只允许会话中有限的数据量.

我想要做的是在用户登录时从数据库中获取User对象,并将其保存在会话中,这样我就可以从模板中访问它等等(我在User类中有一些方法需要调用以便自定义UI ),但如果我放置User对象,则调用其toString方法并将其放入会话中.

我发现推荐的方法是将大量数据放入Cache中,但我不知道如何从模板中访问它(我想我可以用@Before注释创建方法并将用户添加到renderArgs,但这似乎不太给我干净)另一个问题是Cache的生命周期有限,所以我的对象可能会消失.

有没有人有这种问题的经验?

有没有办法使用服务器端会话?我不需要这个项目的REST功能,因此,就我而言,应用程序可以保存状态...

java session caching playframework

11
推荐指数
1
解决办法
2万
查看次数

如何使用ScalaQuery进行分页查询?

我有一个查询返回Person我正用于从数据库中获取一页结果的对象:

def page(pageNumber:Int, pageSize:Int) : Seq[Person] = database.withSession {
  val query = for(person <- People) yield person.mapped
  val startIndex = (pageNumber - 1) * pageSize
  query.list.slice(startIndex, startIndex + pageSize)
}
Run Code Online (Sandbox Code Playgroud)

这有效,但我想知道我是否可以在数据库中进行分页,方法与javax.persistence.QueryAPI setFirstResultsetMaxResults方法相同,而不是slice在结果列表中使用.

scala scalaquery

11
推荐指数
1
解决办法
2375
查看次数

获取方法:一对多

getEmployeeNameByBatchId(int batchID)
getEmployeeNameBySSN(Object SSN)
getEmployeeNameByEmailId(String emailID)
getEmployeeNameBySalaryAccount(SalaryAccount salaryAccount)

要么

getEmployeeName(int typeOfIdentifier,byte [] identifier) - >在这个方法中,typeOfIdentifier告诉标识符是否为batchID/SSN/emailID/salaryAccount

以上哪一种更好的方法实现了get方法?

这些方法将在Servlet中,并且将从将提供给客户的API进行调用.

java oop java-ee

10
推荐指数
2
解决办法
673
查看次数

如何检索标准的iPhone tabitem图像?

我想使用标准图标,如搜索,下载,联系人,设置和列表.其中大多数都存在于App Store等应用程序中,但我不知道如何检索它们.

谢谢

iphone icons tabbar

10
推荐指数
2
解决办法
2万
查看次数

在JBoss 4.2上使用JPA启用Hibernate二级缓存

使用Java Persistence API(带注释的实体)时,启用Hibernate的二级缓存需要哪些步骤?我该如何检查它是否正常工作?我正在使用JBoss 4.2.2.GA.

从Hibernate文档中,我似乎需要启用缓存并在persistence.xml中指定缓存提供程序,如:

<property name="hibernate.cache.use_second_level_cache"
          value="true" /> 
<property name="hibernate.cache.provider_class" 
          value="org.hibernate.cache.HashtableCacheProvider" /> 
Run Code Online (Sandbox Code Playgroud)

还需要什么?我是否需要将@Cache注释添加到JPA实体中?

如何判断缓存是否正常?我在运行Query之后尝试访问缓存统计信息,但Statistics.getSecondLevelCacheStatistics返回null,可能是因为我不知道要使用哪个'region'名称.

java caching hibernate jpa

8
推荐指数
1
解决办法
1万
查看次数

如何将字符从Oracle编码为XML?

在我的环境中,我使用Java将结果集序列化为XML.它基本上是这样的:

//foreach column of each row
xmlHandler.startElement(uri, lname, "column", attributes);
String chars = rs.getString(i);
xmlHandler.characters(chars.toCharArray(), 0, chars.length());
xmlHandler.endElement(uri, lname, "column");
Run Code Online (Sandbox Code Playgroud)

在Firefox中,XML看起来像这样:

<row num="69004">
    <column num="1">10069</column>
    <column num="2">sd&#26;</column>
    <column num="3">FCVolume                      </column>
</row>
Run Code Online (Sandbox Code Playgroud)

但是当我解析XML时,我得到了a

org.xml.sax.SAXParseException:字符引用"  "是无效的XML字符.

我现在的问题是:我必须替换哪些字符,或者如何编码我的字符,它们将是有效的XML?

java xml oracle encoding

8
推荐指数
1
解决办法
9320
查看次数

单独开发人员设置的工具?

我是一个单独的开发人员,想要为我的项目获得一些结构.我的硬件设置是运行Windows XP的笔记本电脑和运行Ubuntu的桌面,它充当存储服务器.

我目前使用Mercurial作为我的源代码控制系统,将我的工作副本存储在我的笔记本电脑上,并每隔几天将存储库克隆到Ubuntu机器作为备份.

您会为单独的开发人员推荐哪些其他工具来执行错误跟踪,项目规划等操作?我正在寻找一些简单的东西,要么必须在Windows上运行,要么在Apache上作为Web应用程序运行.

project-planning bug-tracking

8
推荐指数
2
解决办法
3355
查看次数

如何在JavaScript和Flash之间进行跨域通信?

如何打开"跨域安全性",以便页面上的JavaScript可以自由地与SWF通信,即使这是在另一个域上托管的?

我确实知道默认情况下会阻止此函数通信,但是通过使用名为"crossdomain.xml"的文件和actionscript 3函数:system.Security.allowDomain("*").虽然我没有取得足够的成功,但我没有洞察力知道哪一个是开放的.

是否有其他隐藏的安全层,在这种情况下我需要考虑哪些?

我是否通过这种设置以某种方式为潜在的黑客开放我的代码?

(如果您想知道:是的,我必须在一个场景中进行此工作,其中html托管在一个域上,JavaScript从另一个域外部添加,而SWF由来自第三个域的JavaScript嵌入 - 不要问为什么,解释起来太复杂了 - 我也希望我能在一个域中托管整个事情.

javascript security flash actionscript cross-domain

8
推荐指数
1
解决办法
9602
查看次数

部署游戏!应用程序作为可执行jar

是否可以捆绑Play!Web应用程序到可执行jar而不是战争?它可以只在某个端口的localhost上运行,就像使用"play run"命令一样吗?(无需安装游戏系统)

java playframework

8
推荐指数
1
解决办法
1435
查看次数