2

私は現在 JSF を学んでおり、セッターが呼び出されないという問題がいくつかあります。私は非常に単純なプログラムを書いています。それは .XHTML ファイルと .java クラスで構成されています。プログラムのポイントは、日、月、年を選択して表示することです。私がJSFを理解しているように、以下は基礎となるセッターを呼び出し、適切な値を適切なフィールドに保存する必要があります:

<h:selectOneMenu value ="#{bean.selectedDay}" onchange = "submit()"> 
    <f:selectItems value ="#{bean.days}"/>
</h:selectOneMenu>

この例では、フィールド「selectedDay」に値が割り当てられることはありません。なぜこれが起こっているのかを本当に理解したいと思います。私は現在 Windows 8 を実行しており、Glassfish で Eclipse を使用しています。完全なコードは以下で見ることができます。お時間をいただきありがとうございます。

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">

<h:head>
<title>kalenderting</title>
</h:head>

<h:body>
<h:form>
<h:selectOneMenu value ="#{bean.selectedDay}" onchange = "submit()"> 
    <f:selectItems value ="#{opg2.days}"/>
</h:selectOneMenu> 

<h:selectOneMenu value ="#{bean.selectedMonth}" onchange = "submit()" >
    <f:selectItems value ="#{bean.months}"/>
</h:selectOneMenu>

<br/>
#{bean.date}
</h:form>
</h:body>

豆:

@Named
@SessionScoped 
public class Bean implements Serializable {


private List<Integer> days;
private List<String> months;
private List<Integer> years;
private int selectedDay ;
private String selectedMonth;


public Bean()
{   
    months = new ArrayList<String>();
    years = new ArrayList<Integer>();
    days = new ArrayList<Integer>();
    days.add(1);
    days.add(2);

    months.add("januar");
    months.add("februar");

    for( int i = 1990; i<=2020; i++)
    {
        years.add(i);
    }       
}

public List<Integer> getDays() {

    return days;
}

public void setDays(List<Integer> days) {
    this.days = days;
}

public List<String> getMonths() {
    return months;
}

public void setMonths(List<String> months) {
    this.months = months;
}

public List<Integer> getYears() {
    return years;
}

public void setYears(List<Integer> years) {
    this.years = years;
}

public int getSelectedDay() {
    return selectedDay;
}

public void setSelectedDay(int selectedDay) {
    this.selectedDay = selectedDay;
}

public String getSelectedMonth() {
    return selectedMonth;
}

public void setSelectedMonth(String selectedMonth) {
    this.selectedMonth = selectedMonth;
}

public String getDate()
{
    return selectedDay + ". " + selectedMonth;
}
4

0 に答える 0