私はjdkバージョン6とprimefaces 3.4.1でnetbeans 7.2.1を使用しています。データベースを作成し、データベースからエンティティを作成してから、エンティティから JSF ページを作成しました。
データベースからユーザーを抽出し、ユーザー名が特定の文字列に含まれているかどうかに応じて接続することにより、プログラムのマインドマップを作成する jsf マネージド Bean ができました。
データベースを更新するために使用したいマインドマップのダブルクリック機能がありますが、何らかの理由で機能しません。エラーメッセージは表示されず、何も変わりません。
これは、更新機能を実装するために使用しようとしたものです。
package jpa.session;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import jpa.entities.Enginetable;
@Stateless
public class EnginetableFacade extends AbstractFacade<Enginetable> {
@PersistenceContext(unitName = "Networks0.75PU")
private EntityManager em;
@Override
protected EntityManager getEntityManager() {
return em;
}
public EnginetableFacade() {
super(Enginetable.class);
}
public Enginetable setUserdetails( Enginetable user ) {
try
{
return em.merge(user);
}
catch (NoResultException nre)
{
return null;
}
}
}
しかし、うまくいきません。データベースへのアクセスには問題はありませんが、ここにはコードを含めていないことに注意してください。
これは関連する方法です:
public void onNodeDblselect(SelectEvent event) {
this.user.setConnections( this.user.getConnections() + "-" + this.selectedNode.getLabel() );
this.selectedNode = (MindmapNode) event.getObject();
this.ejbFacade.setUserdetails( this.user );
}
これは xhtml からの呼び出しです
<p:mindmap value="#{mmBean.root}" style="width:100%;height:600px">
<p:ajax event="dblselect" listener="#{mmBean.onNodeDblselect}" update="output" />
</p:mindmap>
どうか、どんなアドバイスも素晴らしいでしょう。
これは、Bean の完全なコードです。
package jsf;
import java.io.Serializable;
import java.sql.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ViewScoped;
import javax.inject.Named;
import javax.persistence.Version;
import jpa.entities.Enginetable;
import jpa.session.EnginetableFacade;
import org.primefaces.event.SelectEvent;
import org.primefaces.model.mindmap.DefaultMindmapNode;
import org.primefaces.model.mindmap.MindmapNode;
/**
*
* @author AOL
*/
@Named(value = "mmBean")
@ViewScoped
public class mmBean implements Serializable{
@EJB
private jpa.session.EnginetableFacade ejbFacade;
private MindmapNode root;
private MindmapNode selectedNode;
PreparedStatement pst = null;
private List<Enginetable> elements;
private List<Enginetable> filteredElements;
private List<Enginetable> userlist;
private Enginetable selectedElement;
private Enginetable[] selectedElements;
private Enginetable current;
private Enginetable nodeentity = new Enginetable();
private Enginetable user = new Enginetable();
private String connections;
private String[] strConnections;
private String[] userConn;
private List<String> indirectConn = new ArrayList<String>();
private String[] iConn;
private Object rootlabel;
//ADDED BY AODHÁN
Connection con = null;
Statement st = null;
ResultSet rs = null;
String url = "jdbc:mysql://localhost:8080/networkdb";
String theuser = "Aodhan";
String password = "Cavelcade1988";
/**
* Creates a new instance of MmBean
*/
public mmBean() {
}
@PostConstruct
public void init() {
this.userlist = this.getFullList();
Enginetable entity;
//remoteuser=null;
// filteredElements = new ArrayList<Enginetable>();
this.user = this.userlist.get(0);
this.userConn = this.user.getConnections().split("-");
root = new DefaultMindmapNode(user.getStartnode(), "Google", "006666", false);
this.rootlabel = this.root.getLabel();
for( int i = 0 ; i < this.userlist.size() ; i++){
entity = this.userlist.get(i);
if ( !rootlabel.equals(entity.getStartnode() ) && Arrays.asList(this.userConn).contains( entity.getStartnode() ) ) {
connections = entity.getConnections();
iConn = connections.split("-");
boolean addAll;
addAll = this.indirectConn.addAll(Arrays.asList(iConn));
}
}
for( int i = 0 ; i < this.userlist.size() ; i++){
entity = this.userlist.get(i);
if ( !rootlabel.equals(entity.getStartnode() ) ) {
if ( Arrays.asList(this.userConn).contains( entity.getStartnode() ) ) {
root.addNode(new DefaultMindmapNode(entity.getStartnode() , "Malicious Software: ", "33FF00"));
}
else if ( !Arrays.asList(this.userConn).contains( entity.getStartnode() ) && this.indirectConn.contains( entity.getStartnode() ) ){
root.addNode(new DefaultMindmapNode(entity.getStartnode() , "Malicious Software: ", "00FFFF"));
}
else{
root.addNode(new DefaultMindmapNode( entity.getStartnode() , "Malicious Software: ", "CC0000"));
}
}
}
}
public MindmapNode getRoot() {
return root;
}
public MindmapNode getSelectedNode() {
return selectedNode;
}
public void setSelectedNode(MindmapNode selectedNode) {
this.selectedNode = selectedNode;
}
public void onNodeSelect(SelectEvent event) {
MindmapNode node = (MindmapNode) event.getObject();
for( int i = 0 ; i < this.userlist.size() ; i++){
Enginetable entity;
Object label = node.getLabel();
entity = userlist.get(i);
if ( entity.getStartnode() == label ){
this.nodeentity = entity;
}
}
//load children of select node and add via node.addNode(childNode);
//populate if not already loaded
if(node.getChildren().isEmpty()) {
this.setChildNodes( node );
}
}
public void onNodeDblselect(SelectEvent event) {
this.user.setConnections( this.user.getConnections() + "-" + this.selectedNode.getLabel() );
this.selectedNode = (MindmapNode) event.getObject();
this.ejbFacade.setUserdetails( this.user );
}
public void setUserlist(List<Enginetable> elements) {
this.userlist = elements;
}
public List<Enginetable> getUserlist() {
return this.userlist;
}
public void setUser(Enginetable element) {
this.user = element;
}
public Enginetable getUser() {
return this.user;
}
public void setFilteredElements(List<Enginetable> filteredElements) {
//this.filteredElements = filteredElements;
this.elements=filteredElements;
}
public List<Enginetable> getFilteredElements() {
return filteredElements;
}
public void setSelectedElements(Enginetable[] selectedElements) {
this.selectedElements = selectedElements;
}
public Enginetable[] getSelectedElements() {
return selectedElements;
}
public void setSelectedElement(Enginetable selectedElement) {
this.selectedElement = selectedElement;
}
public Enginetable getSelectedElement() {
return selectedElement;
}
private EnginetableFacade getFacade() {
return ejbFacade;
}
// ADDED BY AODHÁN
public List<Enginetable> getListByUsername(String user){
return this.ejbFacade.getEnginetableByUsername(user);
}
public List<Enginetable> getListByUserID( int id ){
return this.ejbFacade.getEnginetableByUserid(id);
}
public List<Enginetable> getFullList(){
return this.ejbFacade.getFullEnginetable();
}
public Enginetable setUserdetails( Enginetable user ){
return this.ejbFacade.setUserdetails( user );
}
public void setChildNodes( MindmapNode node ){
Object label = node.getLabel();
this.rootlabel = this.root.getLabel();
this.strConnections = nodeentity.getConnections().split("-");
for( int i = 0 ; i < this.userlist.size() ; i++){
Enginetable entity;
entity = this.userlist.get(i);
if ( !label.equals(entity.getStartnode() ) && !this.rootlabel.equals( entity.getStartnode() ) ) {
if ( Arrays.asList(this.userConn).contains( entity.getStartnode() ) && !Arrays.asList(this.strConnections).contains( entity.getStartnode() ) ){
node.addNode(new DefaultMindmapNode(entity.getStartnode() , "Malicious Software: ", "33FF00"));
}
else if ( !Arrays.asList(this.userConn).contains( entity.getStartnode() ) && this.indirectConn.contains( entity.getStartnode() ) ){
node.addNode(new DefaultMindmapNode(entity.getStartnode() , "Malicious Software: ", "00FFFF"));
}
else if ( Arrays.asList(this.userConn).contains( entity.getStartnode() ) && Arrays.asList(this.strConnections).contains( entity.getStartnode() ) ){
node.addNode(new DefaultMindmapNode(entity.getStartnode() , "Malicious Software: ", "0066FF"));
}
else if ( !Arrays.asList(this.userConn).contains( entity.getStartnode() ) && Arrays.asList(this.strConnections).contains( entity.getStartnode() ) ){
node.addNode(new DefaultMindmapNode(entity.getStartnode() , "Malicious Software: ", "FFCC00"));
}
else if ( !Arrays.asList(this.userConn).contains( entity.getStartnode() ) && !Arrays.asList(this.strConnections).contains( entity.getStartnode() ) ){
node.addNode(new DefaultMindmapNode(entity.getStartnode() , "Malicious Software: ", "CC0000"));
}
}
}
}
}