小编Kiv*_*iva的帖子

重定向后,Flash范围中的对象不可用

我对jsf 2中闪存范围的使用存在误解.我想在操作过程中将对象放在flash地图中,并在下一页显示该对象.这是我的动作(由h:commandLink调用):

public String showDetail(PersonneDTO personne) {
    MessageFlashBean message = new MessageFlashBean();
    message.addMessage("test");
    FacesContext.getCurrentInstance().getExternalContext().getFlash()
        .put("test", message);
    return "showDetail";
}
Run Code Online (Sandbox Code Playgroud)

这只是一个测试,但我想要使用的真实对象更复杂.

这是闪存使用的第二页:

<ui:fragment rendered="#{flash.test != null and flash.test.hasMessage()}" >
    <ui:repeat var="message" value="#{flash.test.messages}">
        #{message}
    </ui:repeat>
</ui:fragment>
Run Code Online (Sandbox Code Playgroud)

这是导航(这是我的问题:)):

<navigation-rule>
    <from-view-id>/index.xhtml</from-view-id>
    <navigation-case>
        <from-outcome>showDetail</from-outcome>
        <to-view-id>/private/showDetail.xhtml</to-view-id>
    </navigation-case>
</navigation-rule>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,闪存范围工作正常,我的消息出现.

但是如果我在导航的情况下添加一个重定向,我在Flash地图中的对象就消失了.

我不明白为什么我不能在导航规则中使用重定向(我相信这是flash范围的目标).

我的代码可能有问题.

有人可以帮帮我吗?

谢谢

navigation jsf-2 flash-scope

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

阻止所有者窗口Java FX

我想阻止JavaFX中弹出窗口的所有者窗口.

我像这样初始化我的弹出窗口:

popUp = new Popup();
popUp.getContent().add(content);
popUp.show(pane.getScene().getWindow());
Run Code Online (Sandbox Code Playgroud)

有了这个,我仍然可以在第一个窗口(窗格窗口)中工作.我想禁用此操作,我希望用户只在弹出窗口中工作.

这该怎么做 ?

谢谢.

java javafx-2

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

使用JSF创建XML

我需要使用我的JSF应用程序将XML发送到浏览器.此XML由应用程序生成.我尝试创建它,但我的JSF应用程序每次都发送HTML.

如何更改内容类型以发送xml?

谢谢你的帮助.

java xml jsf java-ee

6
推荐指数
1
解决办法
7062
查看次数

Hibernate/JPA:将实体映射到不同的数据库

我有一个管理3个数据库的应用程序.我在seam框架上使用了带JPA的hibernate.

所以我有一个persitence.xml文件,有三个像这样的persitence-unit(我删除了db2和db3的属性):

<persistence-unit name="db1" transaction-type="JTA" >
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>db1source</jta-data-source>
    <properties>
        <property name="hibernate.dialect"
            value="org.hibernate.dialect.Oracle10gDialect" />
        <property name="hibernate.connection.driver_class"
            value="oracle.jdbc.driver.OracleDriver" />
        <property name="hibernate.hbm2ddl.auto" value="validate" />
        <property name="hibernate.show_sql" value="false" />
        <property name="hibernate.format_sql" value="true" />
        <property name="hibernate.default_schema" value="SI_TEC" />
        <property name="hibernate.validator.apply_to_ddl" value="false" />
        <property name="hibernate.transaction.manager_lookup_class"
            value="org.hibernate.transaction.WeblogicTransactionManagerLookup" />
    </properties>
</persistence-unit>

<persistence-unit name="db2" transaction-type="JTA">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>d2source</jta-data-source>
</persistence-unit>

<persistence-unit name="db3" transaction-type="JTA">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>d3source</jta-data-source>
</persistence-unit>
Run Code Online (Sandbox Code Playgroud)

在我的seam components.xml文件中,我使用我的hibernate配置创建了3个managed-persistence-context来映射seam.

最后,我有几个实体,我的问题就在这里.我需要在db2和db3中的其他实体中保留一些实体.所以数据库模式是不同的,当我部署我的应用程序时,我收到此错误:

org.hibernate.HibernateException: Missing table: PORTAILPERMISSION
    at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1113)
    at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:139)
    at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:349)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1327)
    at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
    Truncated. see log file for complete stacktrace
Run Code Online (Sandbox Code Playgroud)

因为,db2中不存在表PORTAILPERMISSION. …

java database hibernate seam jpa

6
推荐指数
1
解决办法
4396
查看次数

numberOfViewsInSession和多个标签的问题

我的应用程序和内存存在很大问题.应用程序(带有jsf/richfaces/facelet的java)同时被大约7000个用户使用.

默认情况下,变量com.sun.faces.numberOfViewsInSession在web.xml中设置为15.此变量创建一个视图树,jsf在向后点击15次时检索特定视图.

例如,我有3个屏幕用于应用程序,我使用Firefox.我在第一个标签中进入第三个屏幕.在第二个选项卡中,我有第一个屏幕,然后单击下一个按钮,jsf检索第一个屏幕并转到第二个屏幕.

这个机制很棒,但它消耗了大量的内存(对于我来说会话需要25Mo),当你将这个数字乘以7000时,我需要175 Go的内存,这是不可能的.

所以我试着设置com.sun.faces.numberOfViewsInSession等于1(3Mo by session).

但是以我的例子为例,当我点击下一个按钮的第二个标签时,我得到了下一个错误:

javax.servlet.ServletException: viewId:/private/pages/data/dataView.faces - View /private/pages/data/dataView.faces could not be restored.
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:270)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at fr.generali.mezzo.front.commun.performance.filters.PerformanceFilter.doFilter(PerformanceFilter.java:72)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:173)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:420)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:595)
Run Code Online (Sandbox Code Playgroud)

此错误是合乎逻辑的,因为我的numberOfViewsInSession为1.

所以,我的问题是: …

java lifecycle jsf richfaces java-ee

6
推荐指数
1
解决办法
3704
查看次数

在角镖中键入()的其他方式

我做了角落飞镖教程,我有一个问题.

要声明可用于依赖注入的类型,我必须这样做:

class MyAppModule extends Module {
  MyAppModule() {
    type(RecipeBookController);
  }
}
Run Code Online (Sandbox Code Playgroud)

所有类型都是如此.

在一个大型应用程序中,您可以拥有数百种类型,因此声明所有类型是一种奇怪的方式.

有没有其他方法可以做到这一点?

谢谢.

dart angularjs angular-dart

6
推荐指数
1
解决办法
194
查看次数

Dagger:在构造函数中注入命名字符串

我有一个属性文件,我想在服务中注入一个属性.

我想像这样使用DI的构造函数方法:

@Inject
public ScanService(@Named("stocks.codes") String codes, IYahooService yahooService) {
    this.yahooService = yahooService;
    this.codes = codes;
}
Run Code Online (Sandbox Code Playgroud)

我尝试做一个像这个链接中指定的模块=> Dagger:注入@Named字符串?

@Provides
@Named("stocks.code")
public String providesStocksCode() {
    return "test";
}
Run Code Online (Sandbox Code Playgroud)

对于我的服务的提供者方法:

@Provides
@Singleton
public IScanService provideScanService(String codes, IYahooService yahooService){
    return new ScanService(codes, yahooService);
}
Run Code Online (Sandbox Code Playgroud)

当我运行编译时,我收到此错误:

[ERROR] /Users/stocks/src/main/java/net/modules/TestModule.java:[22,7]错误:上java.lang.String中未注射的成员.你想添加一个注射构造函数吗?通过provideScanService(java.lang.String中,net.IYahooService),用于net.modules.TestModule所需

如何在构造函数中正确注入我的属性?

谢谢.

dependency-injection properties dagger

6
推荐指数
2
解决办法
5656
查看次数

交易管理和CDI

我想用CDI开发一个应用程序(我经常使用Spring)来发现这项技术.

我已经阅读了许多关于CDI的文章,以了解它是如何工作的.我有一个关于事务管理的简单问题(例如,对于数据库中的持久性):

是否必须使用EJB 3.1进行事务管理,或者是否可以仅使用CDI进行事务管理?

谢谢.

java-ee cdi ejb-3.1

5
推荐指数
1
解决办法
8684
查看次数

春季活动和范围请求

我想使用 Spring Event 与我的 Web 应用程序中的 bean 进行“对话”。

例如,我的触发事件的 bean 是这样的:

@Controller
@Scope("request")
@KeepAlive
public class Controller extends InitializingBean, ApplicationEventPublisherAware {

private ApplicationEventPublisher applicationEventPublisher;    

public void test() {
  applicationEventPublisher.publishEvent(new TestEvent(this));
}

}
Run Code Online (Sandbox Code Playgroud)

我的监听器事件是这样的:

@Component
@Scope("request")
@KeepAlive
public class Module implements ApplicationListener<TestEvent> {

    @Override
    public void onApplicationEvent(TestEvent event) {

    }

}
Run Code Online (Sandbox Code Playgroud)

最重要的一点是这些 bean 是范围请求,因为它们需要在每次调用页面时进行初始化。

但在启动时,我收到以下消息:

引起原因:java.lang.IllegalStateException:未找到线程绑定请求:您是指实际 Web 请求之外的请求属性,还是在原始接收线程之外处理请求?如果您实际上在 Web 请求中进行操作并且仍然收到此消息,则您的代码可能在 DispatcherServlet/DispatcherPortlet 之外运行:在这种情况下,请使用 RequestContextListener 或 RequestContextFilter 公开当前请求。

就像如果 Spring 尝试在启动时实例化我的模块 bean,并且由于该 bean 是作用域请求,它就无法执行此操作(上下文请求未实例化)

如果我删除事件管理,一切都会正常。

所以,我的问题是:

是否可以将事件侦听器作为范围请求?以及如何做到这一点?

谢谢

spring event-handling

5
推荐指数
1
解决办法
2248
查看次数

在生产中查找 nodejs 中的内存泄漏

我在生产中有一个 nodejs 应用程序,我有内存泄漏(内存在 3 天内从 600Mo 增加到 3Go)。

我搜索了一些工具来进行内存转储,但我只找到了需要在应用程序中写入转储的插件。

当然,我不能停止我的应用程序并重新启动它(修改后)以获取快照,我想使用外部工具在节点外进行内存转储。

你知道这样的工具吗?

谢谢。

memory-leaks production-environment node.js

5
推荐指数
1
解决办法
3485
查看次数