, хотя этот вопрос задавался несколько раз, почему-то предложенные решения у меня не сработали.
, поэтому я пытаюсь спросить снова. Я использую Primefaces в версии 6.2 и протестировал с использованием расширений Primefaces в 6.2.10
Мой текущий код: Что я не понимаю, так это то, как remoteCommand и javaScript взаимодействуют и отправляют «результат» (resultx)значение для методов bean ... я пробовал даже другие комбинации, но каждый раз, когда журнал был нулевым, в то время как java-скрипт всегда печатал ожидаемый результат.
XHTML:
<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:H="http://java.sun.com/jsf/html"
xmlns:pe="http://primefaces.org/ui/extensions"
>
<p:panel header="Quest Panel" id="questEditPanel">
<p:diagram id="diagram" value="#{questChart.model}" style="height:1200px" styleClass="ui-widget-content" var="el">
<f:facet name="element">
<h:outputText id="questName" value="#{el.questName}" style="display:block; margin-top:1em;"/>
<p:commandLink onclick="setClickedSpanElement(this)" >
<p:graphicImage name="woodenui/gear.png" width="20" height="20"/>
</p:commandLink>
</f:facet>
<pe:remoteCommand name="execAssignment" action="#{questChart.setResult}">
<pe:methodSignature parameters="java.lang.String" />
<pe:methodParam name="resultx" />
</pe:remoteCommand>
<p:remoteCommand name="execAssignment2" actionListener="#{questChart.setResult2}" />
<p:ajax event="connect" listener="#{questChart.onConnect}" />
<p:ajax event="disconnect" listener="#{questChart.onDisconnect}" />
<p:ajax event="connectionChange" listener="#{questChart.onConnectionChange}" />
</p:diagram>
</p:panel>
<script type="text/javascript">
function setClickedSpanElement(parentElement) {
var resultx = parentElement.parentNode.innerHTML;
console.log(result)
execAssignment([{resultx:result}]);
execAssignment2([{resultx:result}]);
}
</script>
</ui:composition>
bean:
public void setResult() {
FacesContext context = FacesContext.getCurrentInstance();
Map<String, String> map = context.getExternalContext().getRequestParameterMap();
log.info("done... : " + map.get("resultx"));
}
public void setResult2(String resultx) {
log.info("done...2 : " + resultx);
}
LOG:
01:32:47.986 [http-nio-8080-exec-3] INFO com.wolfo.beans.QuestChart - done... : null
01:32:48.047 [http-nio-8080-exec-6] INFO com.wolfo.beans.QuestChart - done...2 : javax.faces.event.ActionEvent[source=org.primefaces.component.remotecommand.RemoteCommand@3b30fbb2]
консоль браузера:
<span id="quest-editor-form:questName" style="display:block; margin-top:1em;">Quest Element 0</span><a id="quest-editor-form:j_idt13" href="#" class="ui-commandlink ui-widget" onclick="setClickedSpanElement(this);PrimeFaces.ab({s:"quest-editor-form:j_idt13"});return false;"><img id="quest-editor-form:j_idt14" src="/javax.faces.resource/woodenui/gear.png.xhtml" alt="" width="20" height="20"></a>