Hi,
what I am trying to do is to change the set of values in one <s:selectItems>
component after changing the value on a facelets page in another <s:selectItems>. In
other words speaking lets assume that we have two <s:selectItems> components. In the
first one there are branches and in the second one there are categories. And now if I
change the branch the categories in the new selected branch should be loaded into the
second <s:selectItems> . The code is following:
| <h:form id="predefinedSkill" styleClass="edit">
|
| <h:outputLabel for="branch">
| #{messages.branch}
| </h:outputLabel>
|
| <s:decorate id="branchDecoration">
| <h:selectOneMenu value="#{branchHome.instance.name}">
| <s:selectItems value="#{branchList.resultList}" var="branch"
label="#{branch.name}" />
| <s:convertEntity/>
| <a:support event="onchange" reRender="categoryDecoration"
ajaxSingle="true" action="#{categoryHome.loadAllCategories()}"/>
| </h:selectOneMenu>
| </s:decorate>
|
|
| <h:outputLabel for="category">
| #{messages.category}
| </h:outputLabel>
|
| <s:decorate id="categoryDecoration">
| <h:selectOneMenu value="#{categoryHome.instance.name}" >
| <s:selectItems value="#{categoryHome.categoryList}"
var="category" label="#{category.name}" />
| <s:convertEntity/>
| </h:selectOneMenu>
| </s:decorate>
|
| </h:form>
|
But when I change the branch I get the error:
| INFO [lifecycle] WARNING: FacesMessage(s) have been enqueued, but may not have been
displayed.
| sourceId=predefinedSkill:branchDecoration:j_id29[severity=(ERROR 2),
summary=(/specialist/spec_skills.xhtml @76,85
value="#{branchHome.instance.name}": java.lang.IllegalArgumentException:
argument type mismatch), detail=(/specialist/spec_skills.xhtml @76,85
value="#{branchHome.instance.name}": java.lang.IllegalArgumentException:
argument type mismatch)]
|
|
If the Branch Entity has additionally constraints on length i.e.
| @Column(name = "NAME", length = 100)
| @Length(max = 100)
| public String getName() {
| return this.name;
| }
|
I get the following error:
| INFO [lifecycle] WARNING: FacesMessage(s) have been enqueued, but may not have been
displayed.
| sourceId=predefinedSkill:branchDecoration:j_id28[severity=(ERROR 2), summary=(length
must be between 0 and 100), detail=(length must be between 0 and 100)]
| sourceId=predefinedSkill:predefinedSkillDecoration:j_id37[severity=(ERROR 2),
summary=(length must be between 0 and 100), detail=(length must be between 0 and 100)]
|
In both cases the method categoryHome.loadAllCategories() [I don't use branchId as a
parameter in this method for the simplicity reason] is not invoked! But if I invoke it
from the simple <h:input> component:
| <h:form id="predefinedSkill" styleClass="edit">
|
| <h:inputText value="TEST">
| <a:support event="onchange" reRender="categoryDecoration"
ajaxSingle="true" action="#{categoryHome.loadAllCategories()}"/>
| </h:inputText>
|
| <h:outputLabel for="branch">
| #{messages.branch}
| </h:outputLabel>
|
| <s:decorate id="branchDecoration">
| <h:selectOneMenu value="#{branchHome.instance.name}">
| <s:selectItems value="#{branchList.resultList}" var="branch"
label="#{branch.name}" />
| <s:convertEntity/>
| <a:support event="onchange" reRender="categoryDecoration"
ajaxSingle="true" action="#{categoryHome.loadAllCategories()}"/>
| </h:selectOneMenu>
| </s:decorate>
|
|
| <h:outputLabel for="category">
| #{messages.category}
| </h:outputLabel>
|
| <s:decorate id="categoryDecoration">
| <h:selectOneMenu value="#{categoryHome.instance.name}" >
| <s:selectItems value="#{categoryHome.categoryList}"
var="category" label="#{category.name}" />
| <s:convertEntity/>
| </h:selectOneMenu>
| </s:decorate>
|
| </h:form>
|
everything works fine. Could anybody explain me why there is such a problem with
<s:selectItems> and what are possible solutions for that.
Thanks for help in advance.
(I use Seam 2 CR1 + JBoss AS 4.2.0)
Best regards,
jquery
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4086513#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...