When I try to invoke a backing bean method from a modal, it only calls the method when I click the second time. I tried to call the method with "action=''" and "onclick=''". The issue is, that 1) I have to click two times to call the method 2) When I add a javascript function on "oncomplete", the modal window is closed, but the method was not invoked. The first time I click the button I get the Warning: Ressource /userarea/true.xhtml cannot be found. userarea is the folder my JSF page is in.
<?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://xmlns.jcp.org/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:b="http://bootsfaces.net/ui"
xmlns:p="http://primefaces.org/ui"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<ui:composition template="../WEB-INF/templates/template-main.xhtml">
<ui:define name="title">Team</ui:define>
<ui:define name="content">
<f:metadata>
<f:viewAction action="#{TeamBacking.currentUserIsMemberOfATeam()}" />
<f:viewAction action="#{TeamBacking.onPageLoad()}" />
</f:metadata>
<b:row>
<b:column span="7">
<!--Rendered in case there is a team-->
<b:panel rendered="#{TeamBacking.currentUserIsMemberOfATeam()}"
title="Team"
collapsible="false">
<h1>#{TeamBacking.teamName}</h1>
<b:dataTable value="#{TeamBacking.team.students}"
var="teamMember"
id="team-members"
styleClass="table table-striped table-bordered">
<h:column>
<f:facet name="header">
<h:outputText value="Name" />
</f:facet>
<h:outputText value="#{teamMember.firstName} #{teamMember.lastName}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Benutzername" />
</f:facet>
<h:outputText value="#{teamMember.username}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Aktion" />
</f:facet>
<h:form>
<b:commandButton look="danger"
size="small"
value="Entfernen"
onclick="ajax:TeamBacking.setSelectedUser(teamMember);"
oncomplete="javascript:$('.delete-user-pseudo').modal();return false;"
update="delete-user-modal">
</b:commandButton>
</h:form>
</h:column>
</b:dataTable>
<h:outputText rendered="#{TeamBacking.team.project != null}" escape="false">
<p>Projekt: #{TeamBacking.team.project.projectName}</p>
</h:outputText>
</b:panel>
</b:column>
</b:row>
<b:modal id="delete-user-modal"
closable="true"
title="Teammitglied entfernen"
styleClass="delete-user-pseudo" >
<p>Folgenden Nutzer aus dem Team entfernen?</p>
<ul>
<li>Name: #{TeamBacking.selectedUser.firstName} #{TeamBacking.selectedUser.lastName}</li>
<li>Menutzername: #{TeamBacking.selectedUser.username}</li>
</ul>
<h:form id="delete-user-form">
<b:commandButton look="warning"
value="Abbrechen"
onclick="javascript:$('.delete-user-pseudo').modal('hide');return false;" />
<b:commandButton look="danger"
value="Löschen"
onclick="ajax:TeamBacking.deleteSelectedUserFromTeam()"
oncomplete="javascript:$('.delete-user-pseudo').modal('hide');return false;"
update="team-members" />
</h:form>
</b:modal>
</ui:define>
</ui:composition>
</html>
Now I also tried to remove the modal so the Button is within the "blank page" and rendered all the whole time like below. Still the button invokes the backing bean method only on the second click. Any ideas what the issue could be?
<b:row id="delete-user-modal"
styleClass="delete-user-pseudo" >
<b:column span="12">
<p>Folgenden Nutzer aus dem Team entfernen?</p>
<ul>
<li>Name: #{TeamBacking.selectedUser.firstName} #{TeamBacking.selectedUser.lastName}</li>
<li>Menutzername: #{TeamBacking.selectedUser.username}</li>
</ul>
<h:form id="delete-user-form">
<b:row>
<b:column span="4" />
<b:column span="4">
<b:commandButton look="warning"
value="Abbrechen"
styleClass="full-width"
iconAwesome="stop-circle"
onclick="javascript:$('.delete-user-pseudo').modal('hide');return false;" />
</b:column>
<b:column span="4" >
<b:commandButton look="danger"
value="Löschen"
onclick="ajax:TeamBacking.deleteSelectedUserFromTeam()"
update="team-members form-picklist"
styleClass="full-width"
iconAwesome="trash-o"/>
</b:column>
</b:row>
</h:form>
</b:column>
</b:row>