Hier mal wieder ein neues großes Problem von mir,
Ich muss bestimmte Teile meines Projektes über BackingBeans lösen, also per JavaCode ausproprammieren. Hab jetzt folgendes Problem. Ich habe ein HtmlPanel was ein HtmlDataTable beinhaltet. Bei dem HtmlDataTable hat man in jeder Zelle die Möglichkeit ein ContextMenu aufzurufen. Nach dem Aufruf soll mir ein anderes HtmlPanel neu gerendert werden. Dies funktioniert leider aber nicht. Ich hab mal einfach zum testen ein anderes HtmlPanel mit einem ContextMenu versehen und da geht es wunderbar. Sobald ich dies aber bei dem HtmlDataTable versuche, geht dies nicht. Hier einfach mal das Code Beispiel. Würde mich über jede mögliche Lösung freuen.
<!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:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j">
<head>
<style type="text/css">
</style>
</head>
<body>
<h:form id="form">
<richanel binding="#{transporterBackingBean.pnlTour}" />
<richanel binding="#{transporterBackingBean.pnlSide}" id="side" />
</h:form>
</body>
</html>
Ich muss bestimmte Teile meines Projektes über BackingBeans lösen, also per JavaCode ausproprammieren. Hab jetzt folgendes Problem. Ich habe ein HtmlPanel was ein HtmlDataTable beinhaltet. Bei dem HtmlDataTable hat man in jeder Zelle die Möglichkeit ein ContextMenu aufzurufen. Nach dem Aufruf soll mir ein anderes HtmlPanel neu gerendert werden. Dies funktioniert leider aber nicht. Ich hab mal einfach zum testen ein anderes HtmlPanel mit einem ContextMenu versehen und da geht es wunderbar. Sobald ich dies aber bei dem HtmlDataTable versuche, geht dies nicht. Hier einfach mal das Code Beispiel. Würde mich über jede mögliche Lösung freuen.
<!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:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j">
<head>
<style type="text/css">
</style>
</head>
<body>
<h:form id="form">
<richanel binding="#{transporterBackingBean.pnlTour}" />
<richanel binding="#{transporterBackingBean.pnlSide}" id="side" />
</h:form>
</body>
</html>
Java:
public class TransporterBackingBean implements Serializable {
private Integer actTourNumber;
private ArrayList<Tour> tours;
private HtmlPanel pnlTour;
private HtmlPanel pnlSide;
public TransporterBackingBean() {
TourDAO tdao = new TourDAO();
// get the data from database
setTours((ArrayList<Tour>) tdao.select());
this.actTourNumber = 0;
// table with data
HtmlDataTable tableTour = new HtmlDataTable();
tableTour.setReRender("side");
tableTour.setVar("tour");
tableTour.setId("tour");
tableTour.setValueExpression("value", createValueExpression(
#{transporterBackingBean.tours}", ArrayList.class));
// context menu on cell
ContextMenu conTour = new ContextMenu();
conTour.setSubmitMode("ajax");
Application app = FacesContext.getCurrentInstance().getApplication();
HtmlMenuItem miWork = (HtmlMenuItem)app.
createComponent(HtmlMenuItem.COMPONENT_TYPE);
miWork.setValue("Beladebild");
miWork.setReRender("side");
miWork.setActionListener(createMethodBinding("#
{transporterBackingBean.takeTourRow}",
new Class[] { ActionEvent.class }));
conTour.getChildren().add(miWork);
// column
HtmlColumn column = new HtmlColumn();
column.setTransient(true);
// cell content
HtmlOutputText output = new HtmlOutputText();
output.setValueExpression("value", createValueExpression("
#{tour.number}", Integer.class));
column.getChildren().add(conTour);
column.getChildren().add(output);
tableTour.getChildren().add(column);
pnlTour = new HtmlPanel();
pnlTour.getChildren().add(tableTour);
pnlSide = new HtmlPanel();
HtmlOutputText test = new HtmlOutputText();
test.setValueExpression("value",
createValueExpression("#{transporterBackingBean.actTourNumber}",
Integer.class));
pnlSide.getChildren().add(test);
}
// set the act tour number
public void takeTourRow(ActionEvent event) {
this.setActTourNumber(2);
}
// create the method binding
public MethodBinding createMethodBinding(String action, Class<?>[] param) {
return FacesContext.getCurrentInstance().getApplication()
.createMethodBinding(action, param);
}
// get and set methods by instances
}