Я пытаюсь получить простой commandLink для работы. Вот фрагмент кода страницы:JSF 2.0 commandLink - действие не вызывается, javascript erro
<div class="item-single">
<h:graphicImage value="image/screenshots/#{collectionListBean.collectionListTeaser[0].screenshot}" alt="Screenshot #{collectionListBean.collectionListTeaser[0].title}"/>
<div class="item-title">
<h:form id="teaser0">
<h:commandLink value="#{collectionListBean.collectionListTeaser[0].title}" action="#{collectionBean.showCollection(collectionListBean.collectionListTeaser[0].id)}" />
</h:form>
</div>
<div class="item-description">
<p>
<h:outputText value="#{collectionListBean.collectionListTeaser[0].persons.get(0).person.getFullName()}" />
</p>
</div>
</div>
Заголовок отображается правильно, так что поддержка боб и список доступен и доступен. CollectionBean также доступен и доступен. Список имеет фиксированный размер и используется внутри галереи javascript, поэтому я не использовал элементы ui: repeat или h/p: dataTable.
Я также проверил List of common problems
Действие не вызываются в бэк-бобе, я получаю следующий яваскрипт ошибки BalusC'S на консоли браузера:
Uncaught TypeError: Cannot read property 'teaser0:_idcl' of undefined
Вот соответствующий код поддержки bean (collectionBean):
@Named("collectionBean")
@Scope("access")
@ViewController(viewIds = {ViewIds.EDIT_COLLECTION, ViewIds.SHOW_COLLECTION, ViewIds.EDIT_COLLECTION, ViewIds.METADATA_COLLECTION_ADMIN, ViewIds.EDIT_COLLECTION_EXISTING, ViewIds.COLLECTION_LIST, ViewIds.HOME})
public class CollectionBean extends CollectionBeanBase {
.
.
.
public String showCollection(long id) {
//Check if user is admin, if yes, allow to edit metadata
Authentication auth=SecurityContextHolder.getContext().getAuthentication();
this.collection = collectionService.findById(id);
if (!(auth instanceof AnonymousAuthenticationToken)){
role=auth.getAuthorities().iterator().next().getAuthority();
if(role.equalsIgnoreCase("ROLE_ADMIN")) {
this.collection.setEdit_flag(true);
return ViewIds.EDIT_COLLECTION;
}
}
return ViewIds.SHOW_COLLECTION;
}
У кого-нибудь есть идея, в чем проблема? Любой намек высоко ценится! спасибо, ребята, заранее!
извините, но зачем мне использовать тег f: param, а затем получить его с помощью FacesContext? Гораздо проще (и чище) imho использовать функции JSF 2.0 и передать параметр с помощью EL. Также я не вижу, как это ответ на мой вопрос, поскольку он ничего не меняет ... однако спасибо за ваш ответ в любом случае – user871784
Хорошо. я понимаю. Пожалуйста, измените аргумент метода long на Long. – KSHiTiJ
работает со мной, как и в bean public void myMethod (Длинный идентификатор) { System.out.println ("id is:" + id); } –
KSHiTiJ