首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ektorp ArrayList在JSF组件中获得全部

Ektorp ArrayList在JSF组件中获得全部
EN

Stack Overflow用户
提问于 2014-02-14 16:01:12
回答 1查看 307关注 0票数 0

如何从CouchDB中通过Ektorp获得现有的旅游列表?我的代码如下所示:

非常感谢。

我在我的getAll类中调用methode TourneyService (),getAll()是一个图尔尼列表

//旅游服务

代码语言:javascript
复制
@Service
public class TourneyService implements Serializable{

private static final long serialVersionUID = 699617628013084160L;

@Autowired
private TourneyRepository tourneyRepository;

public List<Tourney> getAllTourneys(){
    return tourneyRepository.getAll();
}
}

//图尔尼储存库

代码语言:javascript
复制
@Component
public class TourneyRepository extends CouchDbRepositorySupport<Tourney> {

@Autowired
public TourneyRepository(@Qualifier("cegocouchdb") CouchDbConnector db) {
    super(Tourney.class, db);
    initStandardDesignDocument();
}

@GenerateView @Override
public List<Tourney> getAll() {
    ViewQuery q = createQuery("all")
                    .descending(true)
                    .includeDocs(true);
    return db.queryView(q, Tourney.class);
}

   }

//TourneyListBean

代码语言:javascript
复制
    @ManagedBean(name = "TourneyListMmgtBean")
    @RequestScoped
    public class TourneyListBean implements Serializable {

private static final long serialVersionUID = 6130842812974474768L;

@ManagedProperty(value = "#{tourneyService}")
private TourneyService tourneyService;

private List<Tourney> tourneys; 

public void onEdit(RowEditEvent event) {
    FacesMessage msg = new FacesMessage("Tourney changed", "");

    FacesContext.getCurrentInstance().addMessage(null, msg);
}

public void onCancel(RowEditEvent event) {
    FacesMessage msg = new FacesMessage("Aktion abgebrochen", "");

    FacesContext.getCurrentInstance().addMessage(null, msg);
}


public TourneyService getTourneyService() {
    return tourneyService;
}

public void setTourneyService(TourneyService tourneyService) {
    this.tourneyService = tourneyService;
}

public List<Tourney> getTourneys() {
    tourneys = tourneyService.getAllTourneys();
    if (tourneys == null) {
        tourneys = new ArrayList<Tourney>();
    }
    return tourneys;
}

public void setTourneys(List<Tourney> torneys) {
    this.tourneys = torneys;
}
   }

JSF

代码语言:javascript
复制
<ui:define name="content">



    <h:form id="form">

        <p:growl id="messages" showDetail="true" />

        <p:dataTable var="tourney" value="#{TourneyListMmgtBean.tourneys}"
            id="tourneyList" editable="true">

            <f:facet name="header">  
        In-Cell Editing  
    </f:facet>

            <p:ajax event="rowEdit" listener="#{TourneyListMmgtBean.onEdit}"
                update=":form:messages" />
            <p:ajax event="rowEditCancel"
                listener="#{TourneyListMmgtBean.onCancel}" update=":form:messages" />

            <p:column headerText="Turniername" style="width:30%">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{tourney.name}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{tourney.name}" style="width:100%"
                            label="Turniername" />
                    </f:facet>
                </p:cellEditor>
            </p:column>

            <p:column headerText="Straße" style="width:20%">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{tourney.street}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{tourney.street}" style="width:100%"
                            label="Straße" />
                    </f:facet>
                </p:cellEditor>
            </p:column>

            <p:column headerText="Turnierstadt" style="width:24%">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{tourney.city}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{tourney.city}" style="width:100%"
                            label="Turnierstadt" />
                    </f:facet>
                </p:cellEditor>
            </p:column>

            <p:column headerText="Beginnzeit" style="width:24%">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{tourney.beginTime}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{tourney.beginTime}" style="width:100%"
                            label="Beginnzeit" />
                    </f:facet>
                </p:cellEditor>
            </p:column>

            <p:column headerText="Endzeit" style="width:24%">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{tourney.endTime}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{tourney.endTime}" style="width:100%"
                            label="Endzeit" />
                    </f:facet>
                </p:cellEditor>
            </p:column>

            <p:column headerText="Turnierpunkte" style="width:24%">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{tourney.points}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{tourney.points}" style="width:100%"
                            label="Turnierpunkte" />
                    </f:facet>
                </p:cellEditor>
            </p:column>

            <p:column style="width:6%">
                <p:rowEditor />
            </p:column>

        </p:dataTable>

    </h:form>

</ui:define>

错误:

代码语言:javascript
复制
org.ektorp.support.ViewGenerationException: Cannot generate 'all' view for null.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-21 06:43:57

@GenerateView具有以下约束:

  • 该方法必须命名为findByProperty。如果定义了@Type判别器,也可以生成getAll方法使用的"all“视图。
  • 该方法可能只有一个参数。
  • 该属性必须存在于目标类中。

验证您的Tourney类中有@Type判别器

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21783884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档