代码之家  ›  专栏  ›  技术社区  ›  chedine

JSF-动态添加组件的绑定值

  •  1
  • chedine  · 技术社区  · 15 年前

    我想用JSF实现类似的东西 alt text

    单击“将动态添加越来越多的新行” + “按钮,该行将在单击时删除” “按钮。问题是如何将值(动态创建的行中的用户输入)绑定到支持模型。

    public class BackingBean{
      //other code
    
      private List<Criteria> searchFilters; // Each criteria is bound to a row
    
      public void init(){
       //init code
      }
      public void addEmptyCriteria(){
        searchFilters.add(MyFactory.createNewCriteria());
      }
    
    }
    

    行动 +

    这只是一个样板,只要bean在会话范围内,一切都可以正常工作。但将其放在请求范围内更直观。单个搜索是用户发出的单个请求,与用户会话没有任何关系。同样在会话中,强制开发人员从会话中清除/删除backingbean,以便显示一个新的搜索屏幕。

    有没有更好的办法?它在会话范围内是正确的吗?

    1 回复  |  直到 15 年前
        1
  •  1
  •   BalusC    15 年前

    当您使用jsf2.0时,您可以将bean放在 view 范围。

    @ManagedBean
    @ViewScoped
    public class BackingBean {
        // ...
    }
    

    当您仍然使用jsf1.x时,最好的选择是使用 a4j:keepAlive . 设置bean请求的作用域,并将以下内容添加到JSF页面:

    <a4j:keepAlive beanName="managedBeanName" />
    

    如果您没有使用Ajax4jsf,那么我会建议您 Tomahawk's t:saveState

    <t:saveState value="#{managedBeanName}" />