You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by samlai <sy...@gmail.com> on 2008/03/04 08:15:29 UTC
Autocomplete Using Selection as Criteria
I have an autocomplete textfield. I'd like the retrieved autocomplete list
to be based from a selection field in addition to the autocomplete
textfield. I'm not sure how I can feed the current server region selection
to onProvideCompletionsFromServerNameField, serverRegionField is null before
submit. Thanks.
NewUser.java
==========
public class NewUser {
...
private String serverRegionField;
private String serverNameField;
@Component(id = "serverNameField")
@Mixins("Autocomplete")
private TextField serverNameText;
String[] onProvideCompletionsFromServerNameField(String input) {
Dao dao = Dao.getRequestInstance(requestGlobals);
Query query = dao.createNamedQuery("findServerNameLikeForRegion");
query.setParameter("name", input + "%");
query.setParameter("region", serverRegionField);
List<String> serverNameList = (List<String>) query.getResultList();
return serverNameList.toArray(new String[serverNameList.size()]);
}
...
}
NewUser.tml
=========
<div id="newUserView" class="mainpost">
<t:form t:id="newUserForm">
<t:errors />
<div class="t-beaneditor">
<div class="t-beaneditor">
<div class="t-beaneditor-row">
<t:label for="emailField" />
<t:textfield t:id="emailField" t:validate="required,regexp" size="30"
/>
</div>
<div class="t-beaneditor-row">
<t:label for="serverRegionField" />
<t:select t:id="serverRegionField" t:model="literal:US,EU"
t:validate="required"/>
</div>
<div class="t-beaneditor-row">
<t:label for="serverNameField" />
<t:textfield t:id="serverNameField" t:validate="required" size="30"/>
</div>
<div class="t-beaneditor-row">
<t:submit t:id="registerButton" value="Register"/>
</div>
</div>
</div>
</t:form>
</div>
--
View this message in context: http://www.nabble.com/Autocomplete-Using-Selection-as-Criteria-tp15821577p15821577.html
Sent from the Tapestry - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org
Re: AW: Autocomplete Using Selection as Criteria
Posted by samlai <sy...@gmail.com>.
Just want to share my solution. I don't like to do
"onchange='this.form.submit()'" on t:select input, because that can trigger
early validation errors before the user is actually ready to submit the
form. Also, by default the first element in t:select is selected, onchange
only triggers when the user actually changes the selection. If the user is
fine with the default selection, onchange event would never trigger, but I
still need to use it as a criteria. I finally reach the following solution
that I'm happy with.
NewUser.java
==========
public class NewUser {
...
@Persist
private String serverRegionField;
private String serverNameField;
void onActionFromServerRegionFieldLink(String context) {
setServerRegionField(context);
}
String[] onProvideCompletionsFromServerNameField(String input) {
Dao dao = Dao.getRequestInstance(requestGlobals);
Query query =
dao.createNamedQuery("findServerNameLikeForRegion");
query.setParameter("name", input + "%");
query.setParameter("region", serverRegionField);
List<String> serverNameList = (List<String>)
query.getResultList();
return serverNameList.toArray(new
String[serverNameList.size()]);
}
...
}
NewUser.tml
=========
<div id="newUserView" class="mainpost">
<t:form t:id="newUserForm">
<t:errors />
<div class="t-beaneditor">
<div class="t-beaneditor">
<div class="t-beaneditor-row">
<t:label for="emailField" />
<t:textfield
t:id="emailField" t:validate="required,regexp" size="30"/>
</div>
<div class="t-beaneditor-row">
<t:actionlink t:id="serverRegionFieldLink"/>
<t:label for="serverRegionField" />
<t:select t:id="serverRegionField" t:model="literal:US,EU"
t:validate="required" />
</div>
<div class="t-beaneditor-row">
<t:label for="serverNameField" />
<t:textfield t:id="serverNameField" t:mixins="autocomplete"
t:validate="required" size="30"
onfocus="javascript:new
Ajax.Request(document.getElementById('serverRegionFieldLink').href + '/' +
document.getElementById('serverRegionField').value)"/>
</div>
<div class="t-beaneditor-row">
<t:submit t:id="registerButton"
value="Register"/>
</div>
</div>
</div>
</t:form>
</div>
--
View this message in context: http://www.nabble.com/Autocomplete-Using-Selection-as-Criteria-tp15821577p15841150.html
Sent from the Tapestry - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org
AW: Autocomplete Using Selection as Criteria
Posted by "Stroeber, Andreas" <an...@siemens.com>.
Hi samlai,
you should be able to bind an EventListener to the ServerRegion-Field (onChange or onSubmit should be your choice). This Listener can trigger an AJAX-Request and so you should be able to update the Automcomplete-Model. (Don't know the exact syntax, but some JavaAnnotation should handle this.)
I suppose you then need the AutocompleteModel to be server-based instead of client-based as I suspect a changed AutocompleteModel will not be automatically shipped to the client.
Grz
andi
-----Ursprüngliche Nachricht-----
Von: samlai [mailto:syclai@gmail.com]
Gesendet: Dienstag, 4. März 2008 08:15
An: users@tapestry.apache.org
Betreff: Autocomplete Using Selection as Criteria
I have an autocomplete textfield. I'd like the retrieved autocomplete list to be based from a selection field in addition to the autocomplete textfield. I'm not sure how I can feed the current server region selection to onProvideCompletionsFromServerNameField, serverRegionField is null before submit. Thanks.
NewUser.java
==========
public class NewUser {
...
private String serverRegionField;
private String serverNameField;
@Component(id = "serverNameField")
@Mixins("Autocomplete")
private TextField serverNameText;
String[] onProvideCompletionsFromServerNameField(String input) {
Dao dao = Dao.getRequestInstance(requestGlobals);
Query query = dao.createNamedQuery("findServerNameLikeForRegion");
query.setParameter("name", input + "%");
query.setParameter("region", serverRegionField);
List<String> serverNameList = (List<String>) query.getResultList();
return serverNameList.toArray(new String[serverNameList.size()]);
}
...
}
NewUser.tml
=========
<div id="newUserView" class="mainpost">
<t:form t:id="newUserForm">
<t:errors />
<div class="t-beaneditor">
<div class="t-beaneditor">
<div class="t-beaneditor-row">
<t:label for="emailField" />
<t:textfield t:id="emailField" t:validate="required,regexp" size="30"
/>
</div>
<div class="t-beaneditor-row">
<t:label for="serverRegionField" />
<t:select t:id="serverRegionField" t:model="literal:US,EU"
t:validate="required"/>
</div>
<div class="t-beaneditor-row">
<t:label for="serverNameField" />
<t:textfield t:id="serverNameField" t:validate="required" size="30"/>
</div>
<div class="t-beaneditor-row">
<t:submit t:id="registerButton" value="Register"/>
</div>
</div>
</div>
</t:form>
</div>
--
View this message in context: http://www.nabble.com/Autocomplete-Using-Selection-as-Criteria-tp15821577p15821577.html
Sent from the Tapestry - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org