1

私はクライアント側で非常に粗野なので、これは私よりも JSF で確立されている人にとっては非常に簡単な問題かもしれません (非常に簡単です! :D ) しかし、私は数日から頭を失っています.. 幸運なことに私のスペアで時間。しかし、その(死んだ)時点で助けが必要です。助けてください。そうしないと、一晩中キーボードにくぎ付けになります。

2 つのフォームを含む .xhtml ページを作成しました。2 つ目のフォームは、作成するオブジェクトを初期化し、フォームを含むページにリダイレクトして変数に値を割り当てるセッション Bean を指します。

これは最初の .xhtml ページです。

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <title>Modify A Cafeteria Element</title>        
    </h:head>
    <h:body>

        <f:view>
            <h:form>
                <h1><h:outputText value="Modify A Cafeteria Element"/></h1>
                <h:panelGrid columns="2">
                    <h:outputLabel value="Description:" for="description" />
                    <h:inputText id="description" value="#{cafeteriaElementBean.cafeteriaElement.description}" title="Description" />                   

                </h:panelGrid>

                <p:commandButton action="#{cafeteriaElementBean.saveOrEdit()}" value="Save" />
                <p:commandButton action="#{cafeteriaElementBean.edit()}" value="Edit" />
                <p:button outcome="cafeteriaElementList" value="Back" />
            </h:form>
        </f:view>
        <br/>
        #{cafeteriaElementBean.cafeteriaElement.description} periodicity list:
        <br/>

        <f:view>
            <h:form>
                <h1><h:outputText value="List"/></h1>
                <h:dataTable value="#{elementPeriodBean.filteredPerElement(cafeteriaElementBean.cafeteriaElement)}" var="item">
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="MaxAbsoluteForPeriod"/>
                        </f:facet>
                        <h:outputText value="#{item.maxAbsoluteForPeriod}"/>
                    </h:column>                   
                    <!-- code omissed for brevity-->
                </h:dataTable>

                <p:commandButton action="#{elementPeriodBean.create(cafeteriaElementBean.cafeteriaElement)}"  value="Add a new Periodicity"/> 

            </h:form>
        </f:view>



    </h:body>
</html> 

これはそのプリントスクリーンですここに画像の説明を入力

新しい周期性」ボタンをクリックすると、ドライブは何もなくなります。デバッガーはそれを感知せず、サーバー端末は何も書き込みません。どちらのブラウザも 2 番目のページにリダイレクトしません。:(

セッション Beanは次のとおりです: (一部カットあり)

package com.cafeteria.business;

import com.cafeteria.facades.ElementPeriodFacade;
import com.cafeteria.model.CafeteriaElement;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
import com.cafeteria.model.ElementPeriod;
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;

@Named
@SessionScoped
public class ElementPeriodBean implements Serializable, CRUD <ElementPeriod>{

    private ElementPeriod elementPeriod;

    @Inject
    ElementPeriodFacade elementPeriodFacade;

    public List <ElementPeriod> getAll(){
        return elementPeriodFacade.findAll();
    }

    public List <ElementPeriod> filteredPerElement(CafeteriaElement cafeteriaElement){
        return elementPeriodFacade.findForElement(cafeteriaElement);
    }

    public String create(){
       this.elementPeriod = new ElementPeriod();
        return "newElementPeriod";
    }

    public String create(CafeteriaElement cafeteriaElement){
        this.elementPeriod = new ElementPeriod();
        this.elementPeriod.setCafeteriaElement(cafeteriaElement);
        return "newElementPeriod";
    }

    public String modify(ElementPeriod elementPeriod){
        this.elementPeriod = elementPeriod;
        return "newElementPeriod";
    }

    public String saveOrEdit(){
        elementPeriodFacade.create(elementPeriod);
        return "editCafeteriaElement";
    }

      public String edit(){
        elementPeriodFacade.edit(elementPeriod);
        return "editCafeteriaElement";
    }

    public String remove(ElementPeriod elementPeriod){
        elementPeriodFacade.remove(elementPeriod);
        return "editCafeteriaElement";
    }

    public ElementPeriod find(Long id){
        return elementPeriodFacade.find(id);
    }

    public ElementPeriod getElementPeriod() {
        if(this.elementPeriod== null) this.elementPeriod = new ElementPeriod();
        return this.elementPeriod;
    }  

    public void setElementPeriod(ElementPeriod elementPeriod) {
        this.elementPeriod = elementPeriod;
    }
}

これは、データを挿入するためのフォーム ページです。

<?xml version="1.0" encoding="UTF-8"?>
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <title>Create periodicity for Cafeteria Element</title>        
    </h:head>
    <h:body>

        <f:view>
            <h:form>
                <h1><h:outputText value="Create/Edit Periodicity for #{cafeteriaElementBean.cafeteriaElement.description}"/></h1>

                <h:panelGrid columns="2">                 
                    <h:outputLabel value="Periodicity:" for="periodicity" />
                    <h:selectOneMenu id="periodicity" value="#{elementPeriodBean.elementPeriod.periodicity}" title="Periodicity" >
                        <!-- TODO: update below reference to list of available items-->
                        <f:selectItems value="#{periodicityBeam.all}"/>
                    </h:selectOneMenu>

                    <h:outputLabel value="MaxAbsoluteForPeriod:" for="maxAbsoluteForPeriod" />
                    <h:inputText id="maxAbsoluteForPeriod" value="#{elementPeriodBean.elementPeriod.maxAbsoluteForPeriod}" title="MaxAbsoluteForPeriod" />

                    <h:outputLabel value="MaxPercentageForPeriod:" for="maxPercentageForPeriod" />
                    <h:inputText id="maxPercentageForPeriod" value="#{elementPeriodBean.elementPeriod.maxPercentageForPeriod}" title="MaxPercentageForPeriod" />

                    <h:outputLabel value="FixValue:" for="fixValue" />
                    <h:inputText id="fixValue" value="#{elementPeriodBean.elementPeriod.fixValue}" title="FixValue" />   
                </h:panelGrid>

                <p:commandButton value="Save" action="#{elementPeriodBean.saveOrEdit()}"/>

                <!--p:button outcome="editCafeteriaElement" value="Back" /-->
            </h:form>
        </f:view>
    </h:body>
</html>

注: - newElementPeriod は、faces-config.xml からここの最初のページ page から正しく指しています - newElemelPeriod.xhtml は、ブラウザから直接呼び出されるかどうかに関係なく利用できます - 他のボタンは機能します: 一部のボタンは、このボタンと同様の動作をするため、どこでも機能するわけではありません

助けてください!私は夢中になっています!

前もってありがとう、アンドレア

4

2 に答える 2

0

リンクで確認できます commandButtonのプロセス属性かもしれ ません CommandButtonが起動しない

于 2013-11-07T06:39:58.577 に答える
-1

create メソッドにセッション スコープの Bean からパラメータを渡そうとするのはなぜですか? パラメータを削除して、他のセッションスコープのBeanを注入してみてください...

于 2013-11-07T00:29:57.453 に答える