基本上,我需要一种方法来禁用一个(框架提供)@Produces方法,而不是使用我自己的@Produces方法.
更具体地说,我正在使用jBPM 6并试图让它在容器内正常工作.在HumanTaskServiceProducer使用流口水的EnvironmentFactory,它总是产生一个新的Environment.由于某种原因Environment,用于缓存内容的代码EnvironmentFactory被注释掉了.
这意味着jBPM选择JTA事务管理器而不是Container事务管理器.我正在尝试为正确设置环境而不是使用默认环境的任务服务提供我自己的生产者.
有谁知道指定生产者使用的方法?希望我尝试将其指定为@Alternative,但这似乎没有奏效.无论是那种,还是指定环境的方式HumanTaskServiceProducer.
我有一个带有三个标签的标签视图.选项卡视图似乎在前两个选项卡更改中正常工作,但在第三个我得到一个空指针,如
java.lang.NullPointerException
at org.primefaces.component.tabview.TabViewRenderer.encodeEnd(TabViewRenderer.java:59)
Run Code Online (Sandbox Code Playgroud)
此外,TabChangeEvents此时具有空数据.
使选项卡的内容最小(只是一行文本),我可以看到选项卡的内容被相互附加.一旦发生这种情况,问题就开始了.
查看PrimeFaces源代码,似乎是在尝试tabToLoad使用生成的检索变量时tabClientId.我不确定它应该在处理新标签的逻辑分支中.
我的标签视图如下所示:
<p:tabView styleClass="entities-tabview" id="tabs" dynamic="true">
<p:ajax event="tabChange" listener="#{action.onTabChange}"
update="first-tab,second-tab"/>
<p:tab title="First Tab" id="first-tab">
tab one content
</p:tab>
<p:tab title="Second Tab" id="second-tab">
tab two content
</p:tab>
<p:tab title="Other Tab" id="other-tab">
// tab content
</p:tab>
</p:tabView>
Run Code Online (Sandbox Code Playgroud)
似乎代码检查var参数是否在TabView上设置.因为我们不使用它,所以它是null,所以它进入新的tab分支.Tab键索引在tabview上设置.关于什么可能是错的任何想法?
经过一些调查后,我发现在选项卡上更改了应该更改的选项卡是通过请求参数指定的,并_newTab附加了客户端ID .前两次设置正确,但在更改回选项卡时未设置,因此无法找到选项卡和后续的NPE.
更新原因 当选项卡是动态的,并且ajax事件触发时,选项卡会更改,随后ajax会更新选项卡.这似乎导致两个选项卡都加载到同一选项卡中的问题,这很可能在以后搞乱参数.
但是如何能够执行选项卡更改功能并在选项卡中显示其详细信息?
我无法检索到包含EL的属性ViewHandler。
作为最小的示例,这是我的ViewHandler。它只是寻找一个属性"attributeName"并打印出它的值。
public class MiniViewHandler extends ViewHandlerWrapper
{
private ViewHandler defaultViewHandler = null;
public MiniViewHandler()
{
}
public MiniViewHandler(ViewHandler defaultViewHandler)
{
super();
this.defaultViewHandler = defaultViewHandler;
}
@Override
public void renderView(FacesContext context, UIViewRoot viewToRender) throws IOException, FacesException
{
viewToRender.visitTree(VisitContext.createVisitContext(context),
new VisitCallback()
{
@Override
public VisitResult visit(VisitContext context, UIComponent target)
{
if (target.getAttributes().containsKey("attributeName"))
{
System.out.println("Found it: " + target.getAttributes().get("attributeName"));
}
return VisitResult.ACCEPT;
}
}
);
defaultViewHandler.renderView(context, viewToRender);
}
@Override
public ViewHandler getWrapped()
{
return defaultViewHandler;
}
}
Run Code Online (Sandbox Code Playgroud)
这是在中注册的 …
据我所知,我们需要使用,styleClass=因为JSF组件不支持使用just class=.
我最近注意到一些正在使用的组件class=仍然正确渲染.作为一个最小的例子,
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Simple JSF Facelets page</title>
</h:head>
<h:body>
<h:inputText class="wut" anothertag="hi" value="me"/>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
这产生了
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link type="text/css" rel="stylesheet" href="/individuallifefaz/javax.faces.resource/theme.css.xhtml?ln=primefaces-aristo"/>
<title>Simple JSF Facelets page</title></head>
<body>
<input type="text" name="j_idt5" value="me" class="wut"/>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这为什么有效?它显然不仅仅是通过任何未知的标签,因为它anothertag被剥离了.
运行代码后如
public static void main(String... args) throws Exception {
getUnsafe().getByte(0);
}
private static Unsafe getUnsafe() throws NoSuchFieldException, IllegalAccessException {
Field theUnsafe = Unsafe.class.getDeclaredField("theUnsafe");
theUnsafe.setAccessible(true);
return (Unsafe) theUnsafe.get(null);
}
Run Code Online (Sandbox Code Playgroud)
这会导致JVM崩溃,然后查看记录的输出,在Internal exceptions部分下显示一些奇怪的路径:
thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u60\4407\hotspot\srÚÞ ©Ö_®?
thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u60\4407\hotspot\src\share\vm\prims\j
Run Code Online (Sandbox Code Playgroud)
我绝对没有在我的本地机器上使用这些路径,并且一些谷歌搜索显示它们经常在这些故障转储中结束.我假设它们来自最初编译JDK的时候.
我的问题是 - 这是正确的吗?为什么这些信息会被整合到JDK中?纯粹是为了稍后调试?
我有一组精灵,以及其他一些网格,在它们面前我已经在网格上打印了一些纹理作为纹理.通过文本可以查看所有内容,除了在文本的透明度打印在其上时消失的精灵.有任何想法吗?
我有一组由多个提供商提供的数据.由于它们各自都有自己的访问方式,因此它们都有单独的EJB,尽管它们都实现了相同的接口.
有没有办法让所有人都注射?所以我最终得到某种List<MyInterface>?标准注射似乎给出了一个或模糊的错误.
我Kitchen和每一个Product在我Kitchen有一个到期日期,
这是x在创建后初始化的天数
x = for wine 3 years
for cheese 10 days
for eggs 2 days
Run Code Online (Sandbox Code Playgroud)
询问应该来自Kitchen- 厨房中的哪个产品首先到期?
请有人准备好帮我实现这个或者给我一个指导方针吗?我只是进入Java编程世界的6周,挑战自己.
jsf-2 ×3
attributes ×2
java ×2
java-ee ×2
jsf ×2
cdi ×1
class ×1
collections ×1
ejb-3.0 ×1
el ×1
java-8 ×1
jbpm ×1
jvm ×1
primefaces ×1
sprite ×1
tabs ×1
text ×1
three.js ×1
transparency ×1
unsafe ×1