小编Flo*_*ian的帖子

JSF2使用tomcat进行日志记录

我在tomcat6(6.0.28)上有一个使用JSF2(2.1.2),Richfaces4(4.0.0.Final)的项目.为了管理我的EAR的Tomcat和WebSphere7之间的可移植性,我在tomcat lib中有以下jar:el-api-2.2.jar,jsf-api-2.1.2.jar,jsf-impl-2.1.2.jar ,validation-api-1.0.0.GA.jar.

我的问题是我从来没有设法改变JSF或Richfaces的日志级别,除了初始化之外,我在控制台内部看不到任何内容.即使我的服务器响应中出现异常!

我试过几种方法:

1)在我的应用程序中,我正在使用slf4j和log4j.所以自然的方式是使用SLF4JBridgeHandler.install().我在init()方法中创建了一个小servlet来调用这个方法,并添加了'load-on-startup'以确保它在JSF Servlet之前加载(我不确定tomcat是否关心这个load-on-startup指令因为我之前仍然从JSF init获取日志,例如:

INFO: JSF1027 : [null] Les objets ELResolvers de JSF n’ont pas été enregistrés avec le conteneur JSP.
09-09-2011 16:50:58:591 [Thread-2] 937  DEBUG com.jsf.test.SLF4JBridgeHandlerInstallerServlet - SLF4JBridgeHandler.install() OK!
Run Code Online (Sandbox Code Playgroud)

我还在log4j.xml中添加了一些配置:

<logger name="javax.faces"><level value="debug"/></logger>  
<logger name="com.sun.faces"><level value="debug"/></logger>
<logger name="javax.enterprise.resource.webcontainer.jsf"><level value="debug"/></logger>
Run Code Online (Sandbox Code Playgroud)

但是在显示JSF页面时我没有在控制台中看到任何日志...我还尝试使用过滤器在执行JSF Servlet之前调用SLF4JBridgeHandler.install(),但是我只从中获取了很多OK日志我的过滤器......

2)我试着在这里完全遵循教程(它在tomcat日志文件夹中为JSF2的每个记录器创建新文件).我尝试通过更改tomcat的conf文件夹中的logging.properties并在我的应用程序中的src/resources /文件夹中添加一个新的logging.properties.但没有运气......

3)我尝试通过添加以下命令将JSF记录器添加到tomcat中的logging.properties:

javax.enterprise.resource.webcontainer.jsf.managedbean.level=FINEST
javax.enterprise.resource.webcontainer.jsf.managedbean.handlers = java.util.logging.ConsoleHandler
javax.enterprise.resource.webcontainer.jsf.config.level=FINEST
javax.enterprise.resource.webcontainer.jsf.config.handlers = java.util.logging.ConsoleHandler
javax.enterprise.resource.webcontainer.jsf.facelets.level=FINEST
javax.enterprise.resource.webcontainer.jsf.facelets.handlers = java.util.logging.ConsoleHandler
javax.enterprise.resource.webcontainer.jsf.resource.level=FINEST
javax.enterprise.resource.webcontainer.jsf.resource.handlers = java.util.logging.ConsoleHandler
javax.enterprise.resource.webcontainer.jsf.lifecycle.level=FINEST
javax.enterprise.resource.webcontainer.jsf.lifecycle.handlers = java.util.logging.ConsoleHandler
Run Code Online (Sandbox Code Playgroud)

还没有运气......

4)我试着通过tomcat而不是juli使用log4j来遵循这个文档.它似乎运行良好,但更改生成的log4j.properties将JSF记录器放入DEBUG不起作用...

任何的想法 ?

问候,

弗洛里安

jsf logging tomcat richfaces jsf-2

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

JSF2复合组件 - 方法属性existenc的条件

我有一个简单的复合组件,带有一个可选的ajax监听器,使用richfaces a4j:ajax组件实现.

这是接口定义:

<!-- INTERFACE -->
<composite:interface name="inplaceInput">
    <composite:attribute name="value" required="true" />
    <composite:attribute name="render" default="@this" />
    <composite:attribute name="ajaxListener" method-signature="void actionListener(javax.faces.event.AjaxBehaviorEvent)" />
</composite:interface>
Run Code Online (Sandbox Code Playgroud)

以下代码使用两个具有相反呈现条件的重复块正常工作:

<composite:implementation>
    <rich:inplaceInput value="#{cc.attrs.value}" rendered="#{!empty cc.attrs.ajaxListener}">
        <a4j:ajax event="change" render="#{cc.attrs.render}" execute="@this" listener="#{cc.attrs.ajaxListener}" />
    </rich:inplaceInput>
    <rich:inplaceInput value="#{cc.attrs.value}" rendered="#{empty cc.attrs.ajaxListener}">
        <a4j:ajax event="change" render="#{cc.attrs.render}" execute="@this" />
    </rich:inplaceInput>
</composite:implementation>
Run Code Online (Sandbox Code Playgroud)

但是我想避免重复,因为我的组件要复杂得多......

在a4j上使用渲染条件:ajax是我的第一个想法:

<rich:inplaceInput value="#{cc.attrs.value}">
    <a4j:ajax event="change" render="#{cc.attrs.render}" execute="@this" listener="#{cc.attrs.ajaxListener}" rendered="#{!empty cc.attrs.ajaxListener}"  />
    <a4j:ajax event="change" render="#{cc.attrs.render}" execute="@this" rendered="#{empty cc.attrs.ajaxListener}" />
</rich:inplaceInput>
Run Code Online (Sandbox Code Playgroud)

但它不起作用,错误很明显:

javax.faces.FacesException: Unable to resolve composite component from using page using EL expression '#{cc.attrs.ajaxListener}' …
Run Code Online (Sandbox Code Playgroud)

rendered-attribute composite-component jsf-2

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

AndEngine - SpriteGroup在新的attachChild上闪烁

我正在使用最后一个版本的AndEngine分支GLES2,它有两个设备:HTC Desire和Galaxy Nexus.

使用带Sprite的SpriteGroup在屏幕上向下滚动时出现问题.新精灵附加到屏幕顶部的SpriteGroup,并在它们离开底部时分离.我使用池来避免使用大量内存.

只要有一些精灵分离,一些新连接的精灵就会开始随机闪烁几帧.这很烦人,我不明白为什么......

我在回收它们的时候尝试将精灵设置为可见(假),我也试过没有游泳池,但它没有改变一件事.

我认为SpriteGroup可能有一个bug,但不知道在哪里.我试图在begin()方法中将子节点附加到SpriteGroup中,以确保它在onUpdateSpriteBatch()的循环中没有发生,没有运气.

以下是基于AndEngineExamples项目的示例.您可以直接替换SpriteBatchExample类,启动项目并转到Simple/Drawing a SpriteBatch,以查看问题.

提前感谢任何想法!

package org.andengine.examples;

import java.util.Iterator;

import org.andengine.engine.camera.Camera;
import org.andengine.engine.handler.timer.ITimerCallback;
import org.andengine.engine.handler.timer.TimerHandler;
import org.andengine.engine.options.EngineOptions;
import org.andengine.engine.options.ScreenOrientation;
import org.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy;
import org.andengine.entity.scene.Scene;
import org.andengine.entity.scene.background.Background;
import org.andengine.entity.sprite.Sprite;
import org.andengine.entity.sprite.batch.SpriteGroup;
import org.andengine.entity.util.FPSLogger;
import org.andengine.opengl.texture.TextureOptions;
import org.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlas;
import org.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlasTextureRegionFactory;
import org.andengine.opengl.texture.region.ITextureRegion;
import org.andengine.opengl.vbo.VertexBufferObjectManager;
import org.andengine.ui.activity.SimpleBaseGameActivity;
import org.andengine.util.adt.list.SmartList;
import org.andengine.util.adt.pool.GenericPool;

public class SpriteBatchExample extends SimpleBaseGameActivity {
    // ===========================================================
    // Constants
    // ===========================================================

    private static final int CAMERA_WIDTH = 720;
    private static final int CAMERA_HEIGHT = 480;

    // …
Run Code Online (Sandbox Code Playgroud)

android andengine

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