1

我正在尝试使用 JSF 2.0 创建一个基本表,以将“时间表”条目发送到数据库。我已经为所有字段编写了带有 setter 和 getter 的 bean,并通过 faces-config 管理了 bean,但我一直遇到错误:
"com.sun.faces.mgbean.ManagedBeanCreationException: Unable to set property monday1 for managed bean timesheet"

属性名称无关紧要,它只是 faces-config 中列出的第一个属性。我的 int 属性似乎都不起作用。

这是 HTML / JSF 表:

<h:form>
            <table>
                <thead>
                    <tr>
                        <th>Employee Details</th>
                        <th id="reqBox" colspan="2">
                            <span class="reqStar">*</span>
                            <span class="reqText">Required Field</span>
                        </th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>
                            Employee ID <br />
                            <input name="empID" type="text" value="#{userBean.id}" readonly="readonly"/>
                        </td>
                        <td>
                            Employee Name <br />
                            <input name="empName" type="text" value="#{userBean.firstName} #{userBean.lastName}" readonly="readonly" />
                        </td>
                        <td>
                            Week Starting <span class="reqStar">*</span> <br />
                            <input name="weekOf" type="text" value="" />
                            <a href="javascript:NewCal('demo1','mmddyyyy')">&nbsp;
                                <img src="images/cal.gif" border="0" alt="Pick a date" width="16" height="16" />
                            </a>
                        </td>
                    </tr>
                    <tr class="whiteSpacerRow"></tr>
                </tbody>
            </table>
            <table class="content" border="1" rules="none" frame="box" cellpadding="0" cellspacing="0">
                <thead>
                    <tr>
                        <th colspan="10">Record Timesheet</th>
                    </tr>
                    <tr class="header">
                        <td>Task</td>
                        <td>Monday</td>
                        <td>Tuesday</td>
                        <td>Wednesday</td>
                        <td>Thursday</td>
                        <td>Friday</td>
                        <td>Saturday</td>
                        <td>Sunday</td>
                        <td>Total Hours</td>
                    </tr>
                </thead>
                <tbody>
                    <tr class="dateRow">
                        <td class="blank"></td>
                        <td id="monday"></td>
                        <td id="tuesday"></td>
                        <td id="wednesday"></td>
                        <td id="thursday"></td>
                        <td id="friday"></td>
                        <td id="saturday"></td>
                        <td id="sunday"></td>
                    </tr>
                    <tr id="input_row_1">
                        <td>
                            <select name="select_1">
                                <option>-Select One-</option>
                                <option value="Development">Regular Hours</option>
                                <option value="Vacation">Paid Vacation</option>
                                <option value="LOSSOFPAY">Unpaid Vacation</option>
                                <option value="REMOTE">Remote Work</option>
                            </select>
                        </td>
                        <td id="mondayInput1">
                            <h:inputText id="monday1" size="4" value="#{timesheet.monday1}" required="false" />
                            <!-- <input name="monday1" class="smallInput" type="number" size="2" maxlength="4" min="0"/> -->
                        </td>
                        <td id="tuesdayInput1">
                            <h:inputText id="tuesday1" size="4" value="#{timesheet.tuesday1}" required="false" />
                            <!--<input name="tuesday1" class="smallInput" type="number" size="2" maxlength="4" min="0"/> -->
                        </td>
                        <td id="wednesdayInput1">
                            <h:inputText id="wednesday1" size="4" value="#{timesheet.wednesday1}" required="false" />
                            <!--<input name="wednesday1" class="smallInput" type="number" size="2" maxlength="4" min="0"/> -->
                        </td>
                        <td id="thursdayInput1">
                            <h:inputText id="thursday1" size="4" value="#{timesheet.thursday1}" required="false" />
                            <!--<input name="thursday1" class="smallInput" type="number" size="2" maxlength="4" min="0"/> -->
                        </td>
                        <td id="fridayInput1">
                            <h:inputText id="friday1" size="4" value="#{timesheet.friday1}" required="false" />
                            <!--<input name="friday1" class="smallInput" type="number" size="2" maxlength="4" min="0"/> -->
                        </td>
                        <td id="saturdayInput1">
                            <h:inputText id="saturday1" size="4" value="#{timesheet.saturday1}" required="false" />
                            <!--<input name="saturday1" class="smallInput" type="number" size="2" maxlength="4" min="0"/> -->
                        </td>
                        <td id="sundayInput1">
                            <h:inputText id="sunday1" size="4" value="#{timesheet.sunday1}" required="false" />
                            <!--<input name="sunday1" class="smallInput" type="number" size="2" maxlength="4" min="0"/> -->
                        </td>
                        <td>
                            <!-- <h:inputText id="total1" size="4" value="" required="false" /> -->
                            <input name="total1" id="total1" type="text" size="5" readonly="readonly" />
                        </td>
                    </tr>
                    <tr id="input_row_2">
                        <td>
                            <select name="select_2">
                                <option>-Select One-</option>
                                <option value="Development">Regular Hours</option>
                                <option value="Vacation">Paid Vacation</option>
                                <option value="LOSSOFPAY">Unpaid Vacation</option>
                                <option value="REMOTE">Remote Work</option>
                            </select>
                        </td>
                        <td id="mondayInput2">
                            <h:inputText id="monday2" size="4" value="#{timesheet.monday2}" required="false" />
                            <!-- <input name="monday2" class="smallInput" type="number" size="2" maxlength="4" min="0"/> -->
                        </td>
                        <td id="tuesdayInput2">
                            <h:inputText id="tuesday2" size="4" value="#{timesheet.tuesday2}" required="false" />
                            <!--<input name="tuesday2" class="smallInput" type="number" size="2" maxlength="4" min="0"/> -->
                        </td>
                        <td id="wednesdayInput2">
                            <h:inputText id="wednesday2" size="4" value="#{timesheet.wednesday2}" required="false" />
                            <!--<input name="wednesday2" class="smallInput" type="number" size="2" maxlength="4" min="0"/> -->
                        </td>
                        <td id="thursdayInput2">
                            <h:inputText id="thursday2" size="4" value="#{timesheet.thursday2}" required="false" />
                            <!--<input name="thursday2" class="smallInput" type="number" size="2" maxlength="4" min="0"/> -->
                        </td>
                        <td id="fridayInput2">
                            <h:inputText id="friday2" size="4" value="#{timesheet.friday2}" required="false" />
                            <!--<input name="friday2" class="smallInput" type="number" size="2" maxlength="4" min="0"/> -->
                        </td>
                        <td id="saturdayInput2">
                            <h:inputText id="saturday2" size="4" value="#{timesheet.saturday2}" required="false" />
                            <!--<input name="saturday2" class="smallInput" type="number" size="2" maxlength="4" min="0"/> -->
                        </td>
                        <td id="sundayInput2">
                            <h:inputText id="sunday2" size="4" value="#{timesheet.sunday2}" required="false" />
                            <!--<input name="sunday2" class="smallInput" type="number" size="2" maxlength="4" min="0"/> -->
                        </td>
                        <td>
                            <!-- <h:inputText id="total2" size="4" value="#{timesheet.total2}" required="false" /> -->
                            <input name="total2" id="total2" type="text" size="5" readonly="readonly" />
                        </td>
                    </tr>
                    <tr class="green"><th colspan="10">Expenses</th></tr>
                    <tr class="header">
                        <td class="blank"></td>
                        <td>Air Fare</td>
                        <td>Lodging</td>
                        <td>Car Rental</td>
                        <td>Per-Diem</td>
                        <td class="blank"></td>
                        <td class="blank"></td>
                        <td class="blank"></td>
                        <td>Total Expenses</td>
                    </tr>
                    <tr class="greenSpacerRow"></tr>
                    <tr>
                        <td class="blank"></td>
                        <td>
                            <h:inputText id="airFare" size="6" value="#{timesheet.airFare}" required="no" />
                            <!-- <input name="airFare" class="smallInput" type="number" size="4" maxlength="4" min="0"/> -->
                        </td>
                        <td>
                            <h:inputText id="lodging" size="6" value="#{timesheet.lodging}" required="false" />
                            <!-- <input name="lodging" class="smallInput" type="number" size="4" maxlength="4" min="0"/> -->
                        </td>
                        <td>
                            <h:inputText id="carRental" size="6" value="#{timesheet.carRental}" required="false" />
                            <!-- <input name="carRental" class="smallInput" type="number" size="4" maxlength="4" min="0"/> -->
                        </td>
                        <td>
                            <h:inputText id="perDiem" size="6" value="#{timesheet.perDiem}" required="false" />
                            <!-- <input name="perDiem" class="smallInput" type="number" size="4" maxlength="4" min="0"/> -->
                        </td>
                        <td class="blank"></td>
                        <td class="blank"></td>
                        <td class="blank"></td>
                        <td>
                            <input name="expenseTotal" id="expenseTot" class="smallInput" type="text" size="4" maxlength="4" min="0" readonly="readonly"/>
                        </td>
                    </tr>
                </tbody>
            </table>
            <table class="content" border="0" cellpadding="0" cellspacing="0">
                <tbody>
                    <tr>
                        <td>
                            <input type="button" onClick="submitTimesheet()" value="Submit" />
                            <input type="button" onClick="cancel()" value="Cancel" />
                            <input type="button" onClick="displayTimesheets()" value="Display Entered Timesheets" />
                        </td>
                    </tr>
                </tbody>
            </table>
        </h:form>

和我的面孔配置:

<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xi="http://www.w3.org/2001/XInclude"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<managed-bean>
  <managed-bean-name>timesheet</managed-bean-name>
  <managed-bean-class>com.timesheet.Timesheet</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
  <managed-property>
   <property-name>date</property-name>
   <property-class>java.util.Date</property-class>
   <value/>
  </managed-property>
  <managed-property>
   <property-name>monday1</property-name>
   <property-class>int</property-class>
   <value/>
  </managed-property>
  <managed-property>
   <property-name>monday2</property-name>
   <property-class>int</property-class>
   <value/>
  </managed-property>
  <managed-property>
   <property-name>tuesday1</property-name>
   <property-class>int</property-class>
   <value/>
  </managed-property>
  <managed-property>
   <property-name>tuesday2</property-name>
   <property-class>int</property-class>
   <value/>
  </managed-property>
  <managed-property>
   <property-name>friday1</property-name>
   <property-class>int</property-class>
   <value/>
  </managed-property>
  <managed-property>
   <property-name>friday2</property-name>
   <property-class>int</property-class>
   <value/>
  </managed-property>
  <managed-property>
   <property-name>saturday1</property-name>
   <property-class>int</property-class>
   <value/>
  </managed-property>
  <managed-property>
   <property-name>saturday2</property-name>
   <property-class>int</property-class>
   <value/>
  </managed-property>
  <managed-property>
   <property-name>sunday1</property-name>
   <property-class>int</property-class>
   <value/>
  </managed-property>
  <managed-property>
   <property-name>sunday2</property-name>
   <property-class>int</property-class>
   <value/>
  </managed-property>
  <managed-property>
   <property-name>thursday1</property-name>
   <property-class>int</property-class>
   <value/>
  </managed-property>
  <managed-property>
   <property-name>thursday2</property-name>
   <property-class>int</property-class>
   <value/>
  </managed-property>
  <managed-property>
   <property-name>wednesday1</property-name>
   <property-class>int</property-class>
   <value/>
  </managed-property>
  <managed-property>
   <property-name>wednesday2</property-name>
   <property-class>int</property-class>
   <value/>
  </managed-property>
  <managed-property>
   <property-name>workType1</property-name>
   <property-class>java.lang.String</property-class>
   <value/>
  </managed-property>
  <managed-property>
   <property-name>workType2</property-name>
   <property-class>java.lang.String</property-class>
   <value/>
  </managed-property>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>jobPostings</managed-bean-name>
  <managed-bean-class>com.logic.JobPostings</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
  <managed-property>
   <property-name>postings</property-name>
   <property-class>org.apache.myfaces.custom.fileupload.UploadedFile</property-class>
   <value/>
  </managed-property>
 </managed-bean>
</faces-config>

如果你想查看我的堆栈跟踪或设置器/获取器的 bean,我也可以把它放上去

4

1 回答 1

3
<managed-property>
    <property-name>monday1</property-name>
    <property-class>int</property-class>
    <value/>
</managed-property>

您尚未将有效值指定int为托管属性值。有效值int是 到 范围内的Integer.MIN_VALUE数字Integer.MAX_VALUE。空字符串或空值不是有效值int。这些都是非法的论点。

要解决你的问题,要么做<value>0</value>

<managed-property>
    <property-name>monday1</property-name>
    <property-class>int</property-class>
    <value>0</value>
</managed-property>

或者干脆删除<managed-property>并依赖标准 Javaint默认的0. 顺便说一句,我也对所有其他无价值的托管属性表示怀疑。首先,它们似乎都毫无用处。实际上,整个<managed-bean>条目似乎毫无用处,因为您可以只使用 JSF2@ManagedBean注释。

于 2012-08-02T16:50:49.777 回答