Hi Leute!
Ich versuch grad meine ersten Schritte mit JavaServerFaces, dafür hab ich mir gleich ein eigenes Projekt aufgebrummt, das mir sogar was bringt
Ich hab mir einen MailServer aufgesetzt, der Domains, Emails, Weiterleitungen, etc. über MySQL-Tabellen verwaltet.
Damit ich nicht immer direkt auf der Datenbank rumschrubben muss, will ich mir jetzt eine JSF Webapplikation schreiben, die mir diese Verwaltung abnimmt.
Dazu habe ich jetzt erstmal die Domains in Auge gefasst. Ich will also eine Seite, auf der alle Domains gelistet werden. Über eine Checkbox soll man eine Domain löschen oder bearbeiten können, zudem soll man noch eine neue Domain hinzufügen können.
Soweit bin ich nun schon: ich hab die Seite, die mir die Domains auflistet. Dafür habe ich eine JSP domains.jsp, eine Klasse Domain und eine Klasse DomainList (die sehr einfach ist und sogar auch die Datenbankverbindung herstellt, aber das war ja nur zum Testen).
Hier mal der Quellcode:
domains.jsp
Domain.java
DomainList.java
Ich weiß, dass das nicht wirklich sauber ist, aber für die ersten Schritte reicht es ja mal. Mein Problem ist jetzt folgendes:
Vor den Button "ausführen" soll eine Select-Box hin, die die Aktionen "löschen" und "bearbeiten" beinhaltet. Je nachdem, was der Benutzer ausführt soll nun die entsprechende Aktion ausgeführt werden und genau da liegt das Problem: wie krieg ich raus, welche Aktion der Benutzer gewählt hat? Wo sollen diese Aktionen ausgeführt werden? Soll die Klasse Domain.java die Methoden delete() und edit() bekommen oder soll ich eine eigene Klasse DomainActions.java schreiben, die die entsprechenden Aktionen ausführt?
Bin in dem Thema leider nicht so bewandert, wäre es aber gerne
Die Tutorials, die ich bis jetzt gesehen habe, behandeln so ein Thema leider nicht.
Danke schonmal und viele Grüße,
Martin
Ich versuch grad meine ersten Schritte mit JavaServerFaces, dafür hab ich mir gleich ein eigenes Projekt aufgebrummt, das mir sogar was bringt
Damit ich nicht immer direkt auf der Datenbank rumschrubben muss, will ich mir jetzt eine JSF Webapplikation schreiben, die mir diese Verwaltung abnimmt.
Dazu habe ich jetzt erstmal die Domains in Auge gefasst. Ich will also eine Seite, auf der alle Domains gelistet werden. Über eine Checkbox soll man eine Domain löschen oder bearbeiten können, zudem soll man noch eine neue Domain hinzufügen können.
Soweit bin ich nun schon: ich hab die Seite, die mir die Domains auflistet. Dafür habe ich eine JSP domains.jsp, eine Klasse Domain und eine Klasse DomainList (die sehr einfach ist und sogar auch die Datenbankverbindung herstellt, aber das war ja nur zum Testen).
Hier mal der Quellcode:
domains.jsp
Code:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<!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">
<f:view>
<f:loadBundle basename="de.resolution_m.mailadmin.messages.global" var="global" />
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<link rel="stylesheet" type="text/css" href="css/style.css" />
<title><h:outputText value="#{global.appTitle}" /></title>
</head>
<body>
<h:form>
<div id="header">[img]images/logo.jpg[/img]</div>
<div id="menu">
<ul>
[*][url="domains.html"]Domains[/url]
[*][url="#"]Benutzer[/url]
[*][url="#"]E-Mail Adressen[/url]
[*][url="#"]Weiterleitungen[/url]
[/list]
</div>
<div id="content">
<h1>Domains</h1>
<div id="actionMenu">
<ul>
[*][url="#"]Neue Domain hinzufügen[/url]
[/list]
</div>
<h:dataTable var="domain" value="#{domainList.domainList}" id="domainTable" headerClass="th" columnClasses="td">
<h:column>
<f:facet name="header">
<h:outputText value="#{global['domainTable.header.id']}" />
</f:facet>
<h:outputText value="#{domain.id}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{global['domainTable.header.name']}" />
</f:facet>
<h:outputText value="#{domain.name}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{global['domainTable.header.users']}" />
</f:facet>
<h:outputText value="#{domain.users}" />
</h:column>
<h:column id="aliases">
<f:facet name="header">
<h:outputText value="#{global['domainTable.header.aliases']}" />
</f:facet>
<h:outputText value="#{domain.aliases}" />
</h:column>
<h:column>
<f:facet name="heder">
<h:outputText value="" />
</f:facet>
<h:selectBooleanCheckbox />
</h:column>
</h:dataTable>
<h:commandButton action="do" value="ausführen" />
</div>
</h:form>
</body>
</f:view>
</html>
Domain.java
Code:
package de.resolution_m.mailadmin;
public class Domain {
private String name;
private String id;
private String users;
private String aliases;
public Domain(String name, String id, String users, String aliases) {
this.name = name;
this.id = id;
this.users = users;
this.aliases = aliases;
}
public String getName() {
return name;
}
public String getId() {
return id;
}
public String getUsers() {
return users;
}
public String getAliases() {
return aliases;
}
}
DomainList.java
Code:
package de.resolution_m.mailadmin;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class DomainList {
private List domainList;
public DomainList() {
}
public List getDomainList() {
domainList = new ArrayList();
try {
Class.forName("org.gjt.mm.mysql.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mailserver", "mailuser", "mailuser");
Statement stmt = connection.createStatement();
ResultSet domains = stmt.executeQuery("select d.id, " +
" d.name, " +
" count(u.id) as users, " +
" count(a.id) as aliases " +
"from virtual_domains d " +
"left join virtual_users u on d.id = u.domain_id " +
"left join virtual_aliases a on d.id = a.domain_id " +
"group by d.id, d.name");
while (domains.next()) {
String id = domains.getString(1);
String name = domains.getString(2);
String users = domains.getString(3);
String aliases = domains.getString(4);
domainList.add(new Domain(name, id, users, aliases));
}
domains.close();
stmt.close();
connection.close();
} catch (SQLException se) {
se.printStackTrace();
} catch (ClassNotFoundException cnfe) {
cnfe.printStackTrace();
}
return domainList;
}
}
Ich weiß, dass das nicht wirklich sauber ist, aber für die ersten Schritte reicht es ja mal. Mein Problem ist jetzt folgendes:
Vor den Button "ausführen" soll eine Select-Box hin, die die Aktionen "löschen" und "bearbeiten" beinhaltet. Je nachdem, was der Benutzer ausführt soll nun die entsprechende Aktion ausgeführt werden und genau da liegt das Problem: wie krieg ich raus, welche Aktion der Benutzer gewählt hat? Wo sollen diese Aktionen ausgeführt werden? Soll die Klasse Domain.java die Methoden delete() und edit() bekommen oder soll ich eine eigene Klasse DomainActions.java schreiben, die die entsprechenden Aktionen ausführt?
Bin in dem Thema leider nicht so bewandert, wäre es aber gerne
Danke schonmal und viele Grüße,
Martin