- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 SEAM 2 的 LocaleSelector 在我的应用程序中设置可以正常工作的区域设置
我还使用 JAWR 的 i18n 消息生成器使消息可用作 Javascript 变量,按照说明 here我创建了一个类来解析当前区域设置,以便 JAWR 加载正确的消息包,这是我的代码
@Name("localeResolver")
public class LocaleResolver implements net.jawr.web.resource.bundle.locale.LocaleResolver {
@In private LocaleSelector localeSelector;
public LocaleResolver() {}
@Override
public String resolveLocaleCode(HttpServletRequest request) {
if(localeSelector!=null){
System.out.println("locale selector is not null setting jawr locale to "+localeSelector.getLocaleString());
return localeSelector.getLocaleString();
}else{
System.out.println("locale selector is null setting jawr locale to "+request.getLocale().toString());
return request.getLocale().toString();
}
}
}
但是 localeSelector 始终为 null,因此它使用 request.getLocale 进行设置,这似乎是浏览器的默认区域设置(如果用户希望手动覆盖则不好)
为什么注入(inject)的 localeSelector 会为 null,我在其他组件中已经成功注入(inject)了?
谢谢
更新:web.xml 内容
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>
<context-param>
<param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
<param-value>com.sun.facelets.FaceletViewHandler</param-value>
</context-param>
<context-param>
<param-name>org.jboss.jbossfaces.JSF_CONFIG_NAME</param-name>
<param-value>Mojarra-1.2</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.SKIN</param-name>
<param-value>plain</param-value>
</context-param>
<!-- Richfaces Global Ajax Que,
added as getting concurrent conversation access exceptions
from unknown locations -->
<context-param>
<param-name>org.richfaces.queue.global.enabled</param-name>
<param-value>true</param-value>
</context-param>
<filter>
<filter-name>Seam Filter</filter-name>
<filter-class>org.jboss.seam.servlet.SeamFilter</filter-class>
</filter>
<!-- Seam -->
<listener>
<listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
</listener>
<servlet>
<servlet-name>Seam Resource Servlet</servlet-name>
<servlet-class>org.jboss.seam.servlet.SeamResourceServlet</servlet-class>
</servlet>
<!-- JSF -->
<servlet>
<servlet-name>Document Store Servlet</servlet-name>
<servlet-class>org.jboss.seam.document.DocumentStoreServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- jawr Servlet -->
<servlet>
<servlet-name>JavascriptServlet</servlet-name>
<servlet-class>net.jawr.web.servlet.JawrServlet</servlet-class>
<!-- Location in classpath of the config file -->
<init-param>
<param-name>configLocation</param-name>
<param-value>/jawr.properties</param-value>
</init-param>
<init-param>
<param-name>mapping</param-name>
<param-value>/jsJawrPath/</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JavascriptServlet</servlet-name>
<url-pattern>/jsJawrPath/*</url-pattern>
</servlet-mapping>
<!-- Store item Servlet -->
<servlet-mapping>
<servlet-name>Document Store Servlet</servlet-name>
<url-pattern>*.csv</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Document Store Servlet</servlet-name>
<url-pattern>*.xls</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Document Store Servlet</servlet-name>
<url-pattern>*.pdf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<!-- 120 min session timeout -->
<session-config>
<session-timeout>120</session-timeout>
</session-config>
<!-- Mime types -->
<mime-mapping>
<extension>htc</extension>
<mime-type>text/x-component</mime-type>
</mime-mapping>
<!-- Index file def -->
<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
<!-- Server error page -->
<error-page>
<error-code>500</error-code>
<location>/error.xhtml</location>
</error-page>
<!-- File not found page -->
<error-page>
<error-code>404</error-code>
<location>/resourceNotFound.xhtml</location>
</error-page>
<!-- Unathorised pages -->
<error-page>
<error-code>401</error-code>
<location>/notAuthorised.xhtml</location>
</error-page>
<error-page>
<error-code>403</error-code>
<location>/index.xhtml</location>
</error-page>
</web-app>
最佳答案
您的LocaleResolver
作为单独 Servlet 请求的一部分进行调用,该请求不通过标准 JSF Servlet 进行路由。发生这种情况时,Seam 拦截器不会被触发,双射也不会发生。
要解决这个问题,您需要通知 Seam 有关传入请求的信息,以便它正确设置其上下文(请注意,您需要关闭生命周期,因此无法返回获得的值):
ServletLifecycle.beginRequest(request);
String locale = LocaleSelector.instance().getLocaleString();
ServletLifecycle.endRequest();
return locale;
或者,您可以使用提供的 ContextualHttpServletRequest
类,它以更简洁的方式执行相同的操作(在 finally
block 中关闭生命周期等):
final String[] locale = new String[1];
new ContextualHttpServletRequest(request) {
@Override
public void process() throws ServletException, IOException {
// Do the things that need to access Seam contexts within this function:
locale[0] = LocaleSelector.instance().getLocaleString();
}
}.run();
return locale[0];
关于java - SEAM localeSelector 未注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15974460/
这可能是一个糟糕的问题,但我还没有找到任何好的教程来展示如何创建一个用于 eclipse 的 seam 3 项目。我看到我需要 maven、jboss、seam 3 和 eclipse helios.
我正在使用 Seam 3 构建一个新项目。我不明白 Weld 原型(prototype)和 Seam Forge 之间的区别。它们都帮助我们构建一个简单的项目模板。 最佳答案 Seam Forge 是
关于标题的一个简单问题。 我的情况是我想听“在 RENDER_RESPONSE 之前”阶段,并改变一些组件的内部状态。 PhaseListener 是在 SEAM 应用程序中执行此操作的“正确方法”吗
有谁知道我是否可以将 pages.xml 中的值注入(inject) Seam 组件?在 pages.xml 中似乎有一个 in 元素表明我可以,但我不知道如何使用它并且缺少文档。 我正在尝试在因页面
我一直在使用带有小型示例数据库的 Seam-gen 来帮助我学习 Seam 框架。现在我要构建一个更复杂的应用程序。如果我决定从 seam-gen 项目开始,是否有缺点或应该注意的事项? 最佳答案 A
我需要为我站点中的所有页面设置一个 HTTP 响应 header ,我不知道 seam 是否在配置文件中提供了一些 Hook 来做到这一点,或者?以前有人这样做过吗? 谢谢。 最佳答案 我无法在任何地
我正在启动新的企业应用程序。我选择了以下技术:jee6(jsf + primefaces,ejb)和hibernate。我将部署在 Glassfish 3 上。 问题是我应该选择哪个 Seam 版本?
我找不到像样的 Seam 3 教程。现在 Seam 是以模块的形式分布的,但官方文档有点模糊和薄弱……涵盖了所有模块,描述了每个模块,但没有具体内容,如何将它们组合在一起,如何使用 Seam 3 开发
谁能比较和对比这两种解决方案?我不太了解 Seam 或 JSF,但我熟悉 GWT 的工作方式并且非常喜欢它的理论。 主要关注点: 可扩展性/性能 跨浏览器兼容性 学习曲线 生产力 所见即所得的 UI
问题几乎说明了一切,尽管我明确地在寻找我可能会错过的关于 Java EE 6 环境中的 Seam 2 的东西(“损失”)。 对于我最新的(小型)项目,JavaEE 6 或更具体地说 JSF 2 是一个
我正在 WildFly 8 (Java EE 7) 上从 Seam 3 迁移到 DeltaSpike。与 Seam 的 seam-beans.xml 等效的 DeltaSpike 文件是什么?你能告诉
我无法找到此 jar 的 POM 依赖项 - org.jboss.seam-jboss.seam-2.2.2.GA.jar 如果有人遇到过这种情况,可以帮忙吗?谢谢。 最佳答案 您需要在您的 mave
我正在使用maven添加依赖项。我添加了 org.jboss.seam jboss-seam 2.3.5.Final-redhat-1 jboss-seam jar 通过在 p
即使我已将范围类型指定为方法,它也会在 CONVERSATION 范围内实例化。 > UserHome userHome = (UserHome) Component.getInstance(User
我有时会在 session 范围内的组件上收到此错误,但仍未弄清楚导致此失败的原因。有任何想法吗? ERROR [Exceptions] handled and logged exception ja
我正在使用 Seam 并收到“并发调用对话”错误。这是什么意思? 我有一个需要 5 分钟来处理的按钮。我在 2 分钟内收到此错误。将并发请求超时设置为 10 分钟似乎不起作用。有没有办法阻止所有其他请
我正在尝试创建一个包含3个下拉菜单和一个文本区域的表单。我正在使用对话作为范围。当用户单击“提交”按钮时,我结束对话。我面临的问题是后退按钮问题。单击后退按钮时,将记住先前的数据。如果尝试从下拉菜单中
for (...) { UserList userList = (UserList) Component.getInstance(UserList.class, ScopeType.METHO
我成功地创建了一个使用 Seam 凭据进行身份验证的项目,但现在一些要求发生了变化(像往常一样),我需要自动对用户进行身份验证。请参见下面的示例: 用户调用页面: http://server:port
我需要在 Seam 中实现相当大的系统。我正在考虑设计架构的方式。如果使用页面 Controller 或应用程序 Controller 或前端 Controller 或每个 Controller 都很
我是一名优秀的程序员,十分优秀!