# Seltsames Verhalten von JSF DataTable



## Chris__ (6. Jun 2006)

Mann nehme eine Datentabelle:

```
<h:dataTable  border="1" var="board" value="#{boardList}" >
						<h:column>
							<f:facet name="header">
								<h:outputText value="ID" />
							</f:facet>
							<h:outputText value="#{board.id}"   />
						</h:column>
						<h:column>
							<f:facet name="header">
								<h:outputText value="NAME" />
							</f:facet>
							 <h:commandLink value="#{board.name}" action="#{boardManager.select}"/>
						</h:column>
						<h:column>
							<f:facet name="header">
								<h:outputText value="Commands" />
							</f:facet>
							 <h:commandButton value="Edit" action="#{boardManager.edit}" /> 
							 <h:commandButton value="Delete" action="#{boardManager.delete}" /> 
						</h:column>									 
					</h:dataTable>
```
 
Rufe ich die Seite das erste mal auf, so habe ich wunderbar 2 verschiedene Boardnamen bzw IDs.
Rufe ich die Seite jedoch ein 2. mal auf. So habe ich dann 2 mal das selbe Board in der Liste. Aber 
wenn ich auf safe klicke (welche mir zum debug die List<Board> nach stdout iteriert ) dann sind
auf jedenfall noch die beiden Boards dort.


```
....

@DataModel
	List<Board> boardList; 

...
@Factory("boardList")
	public void findBoards() {
		boardList = facadeRemote.getAllBoards();			
	}

public String saveBoard() {
		 for(Board b : boardList) {
			 System.out.println(b.getName());
		 }
		return "success";		
	}
```


MyFaces 1.1.3 - JBoss Seam

grüsse


----------



## Gumble (7. Jun 2006)

in welchem Scope liegt denn das Board-Bean? Hatte mal so aehnliches (unerklaerliches) Verhalten in Zusammenhang mit Request-scoped Beans und einem Browserrefresh. Hab momentan alle Beans in die Session gelegt, STATE_SAVING_METHOD auf client gesetzt und allen Pages ein <redirect /> verpasst. Ist aber auch keine Loesung... vor allem wenn man mehrere Seiten gleichzeitig oeffnen moechte.


----------



## Guest (8. Jun 2006)

Gumble hat gesagt.:
			
		

> in welchem Scope liegt denn das Board-Bean? Hatte mal so aehnliches (unerklaerliches) Verhalten in Zusammenhang mit Request-scoped Beans und einem Browserrefresh. Hab momentan alle Beans in die Session gelegt, STATE_SAVING_METHOD auf client gesetzt und allen Pages ein <redirect /> verpasst. Ist aber auch keine Loesung... vor allem wenn man mehrere Seiten gleichzeitig oeffnen moechte.



Sorry das ich jetzt erst antworte:

Session Scope. 


```
@Stateful
@Scope(ScopeType.SESSION)
@Name("boardManager")
public class BoardManagerBean implements BoardManagerLocal,Serializable {

	@EJB BoardFacadeRemote facadeRemote;
	
	@DataModelSelection("boardList")                                                                 
	@Out(required=false)                                                                  
	private Board board;
	
	@DataModel(scope=ScopeType.PAGE)
	List<Board> boardList; 
	
	@DataModel
	List<Category> categories;  
	 
	
	public String saveBoard() {
		 for(Board b : boardList) {
			 System.out.println(b.getName());
		 }
		return "success";		
	}

	public void select() {
	    
	}
	   
	
	@Factory("boardList")
	public void findBoards() {
		boardList = facadeRemote.getAllBoards();			
	}
	
	@Factory("categories")
	public void findCateogries() {
		if(board==null) {
			categories= new ArrayList<Category>();
		} else {
			categories =  board.getSubCategories();
		}
	}
	
	
	public void delete() {
		// TODO Auto-generated method stub
		
	}

	public void edit() {
		// TODO Auto-generated method stub
		
	}
	
	public List<Board> getBoards() {
		return boardList;
	}
	
	@Remove @Destroy
	public void destroy() {}

}
```

meine Bean.


----------

