Java 当用户单击一行时,如何导航到其他页面?
我希望在用户单击行时能够导航到其他页面。Java 当用户单击一行时,如何导航到其他页面?,java,jsf-2,richfaces,Java,Jsf 2,Richfaces,我希望在用户单击行时能够导航到其他页面。 问题 没有抛出任何错误。我可以看到selectionListener以预期的行值执行,但什么也没有发生 这是正确的方法吗?即使用我的动作监听器来实现这一目的 就是这个。 支持bean package com.howto; import java.util.ArrayList; import java.util.Collection; import java.util.List; import javax.annotation.PostConstr
问题
- 没有抛出任何错误。我可以看到
以预期的行值执行,但什么也没有发生selectionListener
- 这是正确的方法吗?即使用我的动作监听器来实现这一目的
支持bean
package com.howto;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.AjaxBehaviorEvent;
import javax.faces.model.DataModel;
import org.richfaces.component.UIExtendedDataTable;
@ManagedBean(name = "backingBean")
@SessionScoped
public class BackingBean {
private List<String> names;
private DataModel<String> name;
private String rowValue;
// private List<String> selection;
private Collection<String> selection;
@PostConstruct
public void init() {
names = new ArrayList<String>();
names.add("MyName");
names.add("YourName");
names.add("OurName");
names.add("MamaDidNotGiveOne");
}
public void update() {
System.out.println("Somebody clicked "
+ name);
}
public List<String> getNames() {
return names;
}
public void setNames(List<String> names) {
this.names = names;
}
public DataModel<String> getName() {
return name;
}
public void setName(DataModel<String> name) {
this.name = name;
}
public String selectionListener(AjaxBehaviorEvent event) {
UIExtendedDataTable dataTable = (UIExtendedDataTable) event.getComponent();
Object originalKey = dataTable.getRowKey();
// selectionItems.clear();
for (Object selectionKey : selection) {
dataTable.setRowKey(selectionKey);
if (dataTable.isRowAvailable()) {
//selectionItems.add((InventoryItem) dataTable.getRowData());
rowValue = (String) dataTable.getRowData();
}
}
dataTable.setRowKey(originalKey);
return "success";
}
public String gotopage() {
return "success";
}
public Collection<String> getSelection() {
return selection;
}
public void setSelection(Collection<String> selection) {
this.selection = selection;
}
public String getRowValue() {
return rowValue;
}
public void setRowValue(String rowValue) {
this.rowValue = rowValue;
}
}
导航规则<navigation-rule>
<from-view-id>*</from-view-id>
<navigation-case>
<from-action>#{backingBean.selectionListener}</from-action>
<from-outcome>success</from-outcome>
<to-view-id>/pages/dummyfolder/results.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
*
#{backingBean.selectionListener}
成功
/pages/dummyfolder/results.xhtml
使用Richfaces 4无法找到版本为的标记。您无法通过从操作侦听器方法返回
字符串来导航。您只能在实际操作方法中执行此操作。您需要将方法返回类型设置回void
,并在的帮助下自行导航
无法通过从actionlistener方法返回String
进行导航。您只能在实际操作方法中执行此操作。您需要将方法返回类型设置回void
,并在的帮助下自行导航
<navigation-rule>
<from-view-id>*</from-view-id>
<navigation-case>
<from-action>#{backingBean.selectionListener}</from-action>
<from-outcome>success</from-outcome>
<to-view-id>/pages/dummyfolder/results.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
public void selectionListener(AjaxBehaviorEvent event) {
// ...
FacesContext context = FacesContext.getCurrentInstance();
context.getApplication().getNavigationHandler().handleNavigation(context, "#{backingBean.selectionListener}", "success");
}