Hi Curt,
I notice you add the form to the model but you also declare the Form as
@Bindable?
@Bindable only works on pages so you need to use the normal route for adding
controls (in fact I
recommend you stay clear of @Bindable even for pages, as it confuses folks)
Form form = new Form("form");
add(form);
Hope this helps.
Bob
On 2011/02/28 17:03 PM, Curt Larson wrote:
> Hello,
>
> I recently moved some code from a page into a panel, and now my ajax
> auto complete component is no longer working because Click isnt adding
> the correct *.css and *.js imports now. Does anyone have any idea
> what Im doing wrong? Here is the code from he original Page, that i
> copy/pasted into a new panel.
>
> i guess i could manually add the imports in the new panel, but i would
> rather understand whats happening and let Click handle the imports
> automatically.
>
> Thanks,
> Curt
>
> -----------------------------------------------------------------------------
>
> public class FactPage extends BaseSecurePage {
>
> private static final long serialVersionUID = 1L;
>
> @Inject public PostService postService;
> @Inject public TagService tagService;
> @Bindable public Form form = new Form();
>
>
> @Override
> public void onInit() {
>
> addModel("form", form);
>
> TextField textField = new TextField("title",
> getMessage("formTitle"), true);
> textField.setMaxLength(120);
> textField.setSize(60);
> form.add(textField);
>
> TextArea textArea = new TextArea("body",
> getMessage("formBody"));
> textArea.setRequired(true);
> textArea.setCols(60);
> textArea.setRows(10);
> form.add(textArea);
>
> TagsAutoCompleteLookup tags =
> new TagsAutoCompleteLookup("tagList",
> getMessage("formTaglist"),
> true, tagService);
> form.add(tags);
>
> if(getContext().getApplicationMode().equals("development"))
> form.add(new
> Label("captcha",getMessage("captchaNotRequired")));
> else
> form.add(new Label("captcha", UtilService.printCaptcha()));
>
>
> form.add(new Submit("save", " Save ", this, "onSaveClick"));
> form.add(new Submit("reset", " Reset ", this,
> "onResetClick"));
>
> super.onInit();
> }
>
> .....
>
> }
>
>
> /////////////////////////////////////////////////////////////////////////////////////////////////
>
> public class TagsAutoCompleteLookup extends AutoCompleteTextField {
>
> private static final long serialVersionUID = 1L;
> //private static Logger logger =
> Logger.getLogger(TagsAutoCompleteLookup.class);
>
> TagService tagService = null;
>
> public TagsAutoCompleteLookup(String name, String title, boolean
> required, TagService tagService){
> super(name, title, required);
>
> setSize(60);
> setMaxLength(Constants.TAG_LIST_LENGTH); //30 chars per
> tag, 10
> tags, 9 commas
>
> this.tagService = tagService;
> }
>
>
> public List<String> getAutoCompleteList(String criteria) {
> String post = criteria;
> String pre = null;
> List<String> temp = new ArrayList<String>();
> List<String> results = new ArrayList<String>();
> if(criteria != null && criteria.length() >= 1){
>
> //clean out any illegal chars
> criteria = TagServiceImpl.scrubInput(criteria);
> criteria = TagServiceImpl.formatTags(criteria);
>
> if(criteria.indexOf(",") > 0){
> pre = criteria.substring(0,
> criteria.lastIndexOf(","));
> post =
> criteria.substring(criteria.lastIndexOf(",") + 1);
>
> }
>
> //limit to 10 tags or less
> boolean over10 = false;
> String[] split = criteria.split(",");
> if(split != null && split.length >
> Constants.TAG_COUNT)
> over10 = true;
>
> if(post != null && post.length() >= 1 && over10
> == false)
> temp = tagService.findTagsLike(post,
> new Integer(15));
> }
>
> if(criteria.indexOf(",") > 0){
> for (String string : temp) {
> results.add(pre + "," + string);
> }
> }else{
> results = temp;
> }
>
> return results;
> }
>
>
> @Override
> public void validate() {
>
> boolean result =
> TagServiceImpl.isTagListInvalid(getValue());
>
> if(result){
>
> if(StringUtils.containsAny(getValue(),
> Constants.INVALID_CHARS));
>
> form.setError(getMessage("invalidChars"));
>
> String split[] = getValue().split(",");
> if(split.length > Constants.TAG_COUNT)
>
> form.setError(getMessage("tooManyTags"));
>
> for(int i = 0; i < split.length; i++){
> if(split[i].length() >
> Constants.TAG_LENGTH){
>
> form.setError(getMessage("tooLongTag"));
> break;
> }
> }
> }
>
> super.validate();
> }
> }
>