我有一个页面,其中有一个静态列表,其中包含再次分组为产品组的产品列表。我在 JSP 页面中有一个切换按钮,可以在启用和禁用的产品之间切换。我的切换按钮的代码是如下
<h:commandButton value="retrieve" image="#{displayProductsBean.productsToggleImage}" actionListener="#{displayProductsBean.fetchProductsBasedOnStatus}">
<c:choose>
<c:when test="${displayProductsBean.productFetchCriteria=='0'}">
<f:attribute name="buttonSelected" value="1" />
</c:when>
<c:otherwise>
<f:attribute name="buttonSelected" value="0" />
</c:otherwise>
</c:choose>
</h:commandButton>
现在,在托管 bean 中,我能够获取所选按钮的值,并具有检索启用或禁用产品的逻辑 但我不知道如何回到同一页面,而且我也不希望再次从 DB 重新加载列表。我的 bean 类中的代码如下
public void fetchProductsBasedOnStatus(ActionEvent event)
{
System.out.println("The fetchProductsBasedOnStatus in bean is called");
String selected = (String) event.getComponent().getAttributes().get("buttonSelected");
System.out.println("The value of toggle button is"+selected);
setProductFetchCriteria(Integer.parseInt(selected));
System.out.println("The value of toggle button is"+this.toString());
}
请有人帮我解决这个问题......
最佳答案
But I don't know how would I get back to the same page
只需在操作方法中返回 null
或 void
即可。
and also I don't want the list to be reloaded again from the DB
就不要这样做吗?如果将 bean 保留在 View 范围内并在(后)构造函数中加载列表,那么只要最终用户与同一 View 交互,就会保留相同的列表。您不应该使用 JSTL 标记,因为它会破坏 View 范围。
您的代码可以简化如下:
<h:commandButton value="retrieve" image="#{bean.showDisabledProducts ? 'enabled' : 'disabled'}.png" action="#{bean.toggle}">
<f:ajax render="@form" />
</h:commandButton>
<h:dataTable value="#{bean.products}" ...>
...
</h:dataTable>
与
@ManagedBean
@ViewScoped
public class Bean {
private boolean showDisabledProducts;
private List<Product> enabledProducts;
private List<Product> disabledProducts;
@EJB
private ProductService service;
@PostConstruct
public void init() {
enabledProducts = service.listEnabledProducts();
disabledProducts = service.listDisabledProducts();
}
public void toggle() {
showDisabledProducts = !showDisabledProducts;
}
public List<Product> getProducts() {
return showDisabledProducts ? disabledProducts : enabledProducts;
}
public boolean isShowDisabledProducts() {
return showDisabledProducts;
}
}
关于java - 基于保留参数的切换按钮重新加载同一页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8907747/