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();
}
}