Jan*_*kis 1 navigation jsf primefaces
我正在尝试以用户选择一行时加载另一个页面的方式设置 a。该行return Pages.EDIT_ITEM
已执行但没有任何反应,没有异常或错误,什么也没有。我什至可以Pages.EDIT_ITEM
通过输入 URL 在浏览器中访问,但不知何故,让支持 bean 打开页面不起作用。
我的数据表:
<p:dataTable id="categoriesTable" value="#{category.items}" var="item" selectionMode="single" rowKey="#{item.id}" >
<p:commandButton id="toggler" type="button" value="Columns" style="float:right" />
<p:ajax event="rowSelect" listener="#{listCategoriesController.onRowDblClick}" />
<p:columnToggler datasource="categoriesTable" trigger="toggler" />
<p:column headerText="#{msg['addItem.internal_id']}" sortBy="#{item.internalId}" filterBy="#{item.internalId}" filterMatchMode="contains" >
<h:outputText value="#{item.internalId}" />
</p:column>
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)
我的支持豆:
package de.rcwgmbh.inventory.controller;
import de.rcwgmbh.inventory.data.CategoryProducer;
import de.rcwgmbh.inventory.data.ItemProducer;
import de.rcwgmbh.inventory.model.Category;
import de.rcwgmbh.inventory.model.Item;
import de.rcwgmbh.inventory.services.ItemService;
import java.io.Serializable;
import java.util.List;
import java.util.ResourceBundle;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
import javax.persistence.EntityManager;
import org.primefaces.event.SelectEvent;
import org.primefaces.event.TabChangeEvent;
import org.primefaces.event.UnselectEvent;
/**
*
* @author jalexakis
*/
@ViewScoped
@Named
public class ListCategoriesController implements Serializable {
private static final long serialVersionUID = -2347239478324L;
@Inject
private EntityManager entityManager;
@Inject
private CategoryProducer categoryProducer;
@Inject
private ItemService itemService;
@Inject
private ItemProducer itemProducer;
public List<Item> doListItems(Category category) {
final List<Item> items = itemService.getItemsList(category);
category.setItems(items);
categoryProducer.setSelectedCategory(category);
return items;
}
public String doAddCategory() {
categoryProducer.prepareAddCategory();
return Pages.LIST_CATEGORIES;
}
public String doEditCategory(Category category) {
categoryProducer.prepareEditCategory(category);
return Pages.LIST_CATEGORIES;
}
public String doEditItem(){
itemProducer.prepareEditItem(itemProducer.getSelectedItem());
return Pages.EDIT_ITEM;
}
public void onTabChange(TabChangeEvent event) {
String categoryName = event.getTab().getTitle();
Category category = entityManager.find(Category.class, categoryName);
categoryProducer.setSelectedCategory(category);
ResourceBundle bundle = ResourceBundle.getBundle("messages", FacesContext.getCurrentInstance().getViewRoot().getLocale());
String value = bundle.getString("listCategories.category_selected");
FacesMessage msg = new FacesMessage(value, event.getTab().getTitle());
FacesContext.getCurrentInstance().addMessage(null, msg);
}
public void onRowDblClick(SelectEvent event){
itemProducer.setSelectedItem((Item)event.getObject());
doEditItem();
}
}
Run Code Online (Sandbox Code Playgroud)
您不在此代码中进行重定向。
Ajax 侦听器调用与action
s 的CommandButton
s 不同,如果返回 a 则String
什么也不会发生。
如果你想重定向到另一个页面,你可以做,像这样在你的Ajax调用: FacesContext.getCurrentInstance().getExternalContext().redirect("otherpage.xhtml");
。
归档时间: |
|
查看次数: |
2040 次 |
最近记录: |