Hi,
This is something I made based on "blog" example from seam 2.0.0GA (the one I use).
I have such component in my app:
@Name("search")
public class SearchBean {
private String province;
private String category;
@Factory("searchResults")
public List<Article> search() throws InkaSearchException {
//get articles based on province and category.
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
}
search.jsp page looks like this:
<h:form>
<h:selectOneMenu value="#{search.category}">
<s:selectItems var="category" value="#{categories}"/>
</h:selectOneMenu>
<h:selectOneMenu value="#{search.province}">
<s:selectItems var="province" value="#{provinces}"/>
</h:selectOneMenu>
<h:commandButton value="Szukaj" action="search"/>
</h:form>
<h:dataTable var="art" value="#{searchResults}">
<!-- display search results -->
</h:dataTable>
And this is pages.xml file fragment:
<page view-id="/search.jsp">
<param name="category" value="#{search.category}"/>
<param name="province" value="#{search.province}"/>
</page>
All this behaves strange. When I enter search.jsp page for the first time, searchResults are just initialized and it's ok. But then I set e.g. category to A, and province to B, and hit the button. In debug I can see _first_ factory method is called, and retrieves articles based on still null province and category, _after_this_ province is set to B and category to A. If I change category and province again, lets say to C and D, and hit the button again I can see such actions in debug:
1. category and province set to A and B (old values)
2. factory method called
3. category and province set to C and D.
Why it happens? Why parameters are not set before calling factory method?
Best regards
Pawel Stawicki