1

JSFに次のコードがあります

<h:outputLabel value="Date" for="rdate" />
   <h:inputText id="rdate" autocomplete="off" 
       value="#{myMB.abstractProject.joinedDate}">
   </h:inputText>

そしてEntityクラスでは、次のように宣言しました

private Date joinedDate; 

public Date getJoinedDate() {
    return joinedDate;
}

public void setJoinedDate(Date joinedDate) {
    this.joinedDate= joinedDate;
}

問題は、ManagedBean で次のように null を取得していることです。

System.out.println("date in save method "
+ abstractRequest.getJoinedDate());

この理由は何でしょうか?h:inputText実物大です<h:form>。私の豆の範囲は@ViewAccessScoped

4

3 に答える 3

2

を使用する必要がありますf:convertDateTime。お気に入り:

<h:outputLabel value="Date" for="rdate" />
<h:inputText id="rdate" autocomplete="off" value="#{myMB.abstractProject.joinedDate}" label="Date">
   <f:convertDateTime pattern="dd-MM-yyyy" />
</h:inputText>

ここに例があります。

編集:

これが私がやったことです:

xhtml:

<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core" template="/WEB-INF/templates/globalTemplate.xhtml">

    <ui:define name="title">1532116</ui:define>
    <ui:define name="content">          
        <h:form>
            <h:outputLabel value="Date" for="date" />
            <h:inputText id="date" value="#{so15321163.date}" label="Date" required="true">
                <f:convertDateTime pattern="dd-MM-yyyy"/>
            </h:inputText>              
            <h:message for="date" style="color:red" />              
            <h:commandButton value="Submit" actionListener="#{so15321163.listener}"/>                   
        </h:form>
    </ui:define>    
</ui:composition>

マネージド Bean:

package app.so.dev.web.controller;

import java.io.Serializable;
import java.util.Date;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;

@ManagedBean(name="so15321163")
@ViewScoped // @SessionScoped
public class SO15321163 implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 8012804893825661900L;
    private Date date;

    @PostConstruct
    public void init() {

    }

    public void listener(ActionEvent event) {
        System.out.println(date);
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }   
}
于 2013-03-10T10:22:10.700 に答える
1

確かではありませんが、注釈 @Named が欠落している場合、jsf Bean は正しく機能していません。

より詳細な説明は次のとおりです: https://cwiki.apache.org/confluence/display/EXTCDI/Conversations

于 2013-03-10T15:49:29.113 に答える
1

問題は解決しました。問題はConverter、別のフォーム要素にエラーがあり、フォームの送信が停止したことでした。Converterこの問題を解決するためにクラスを使用しました。

ありがとう

于 2013-03-10T18:54:18.760 に答える