我尝试使用ui:composition构建自己的JSF组件。当我使用一个针对remoteCommand(Primefaces)的action-attribute时,我遇到了一些问题:只要我在h:form中使用该组件的所有元素的action属性,我的代码似乎都有用。但是,当我仅对某些元素使用action属性时,我的bean的方法永远不会被调用任何元素。
这是我的代码:
1,
FOR u IN user
LET content = (
FOR node, edge, path IN 1..10
ANY u._id
post, repost, comment, user_mention, post_mention
FILTER node.created_at >= @timestamp
RETURN node)
RETURN {user: u, content}
2,
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:cc="http://java.sun.com/jsf/composite"
xmlns:p="http://primefaces.org/ui">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</h:head>
<h:body>
<ui:composition>
<cc:interface>
<cc:attribute name="id" />
<cc:attribute name="action" targets="remote" />
</cc:interface>
<cc:implementation>
<p:remoteCommand id="remote" name="remoteCommand" />
<input onclick="remoteCommand();" />
</cc:implementation>
</ui:composition>
</h:body>
</html>
之前的代码不起作用!当我单击第一个输入字段时,我的bean方法不会被执行。
但是,当我在第二个输入字段中包含action属性时,我的bean方法被执行:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:mycomponent="http://java.sun.com/jsf/composite/composites">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<h:outputStylesheet library="styles" name="ownContainers.css" />
</h:head>
<h:body>
<h:form>
<mycomponent:input action="#{testBean.test()}" />
<mycomponent:input />
</h:form>
</h:body>
</html>
当我只需要某些元素的action属性而不是其他元素时,我该怎么办?为什么第一个例子不起作用?