0

我有两个表,country_list 和 rating_list。有单独的jsp,用于向系统添加新国家。问题在于编辑评级页面,可以在其中编辑国家/地区的所有评级。当我打开编辑评级页面时,所有国家名称将一一显示为带有相应文本字段的标签,以给出用户想要给出的评级。当用户在编辑评分页面点击提交时,评分值如何映射到表单值?国家名单可以从数据库中填充,但收视率呢?如果我确定国家/地区的数量,那么我可以在表单类中给出这么多的评级字段。但我不确定会出现多少文本字段。我正在使用struts 1.2。我是否需要在表单中创建 100 个带有空值的字符串,尽管这不是一个好习惯。

例如,对于登录页面,我可以创建两个字段,例如“字符串用户名;字符串密码”和对应的 setter 和 getter。

但在我的问题中,我不确定有多少个国家和相应的评级。所以我很困惑,如果我将国家名称作为列表并以列表形式提供,那么在提交表单时,国家名称和评级是否会自动映射到相应的列表。

4

3 回答 3

1

您可能会发现以下技术很有用。在您的表单类中添加类似于以下内容的 getter 和 setter:

public void setRating(String a_CountryId, String a_sRating)
{
    // Store the rating for the given country id, e.g. in a map
}

public String getRating(String a_sCountryId)
{
   // Return the rating for the given country id, e.g. from a pre-populated map
}

然后,您可以在 JSP 页面中使用以下语法访问它们:

property="rating(${country.id})"

例如,遍历 JSP 页面中的国家并使用 html:input 标签绑定到上面的 getter,例如:

<logic:iterate name="countryList" id="country">
    <bean:write name="country" property="name"/>
    Rating:
    <html:text name="form" property="rating(${country.id})"/>
</logic:iterate>
于 2012-05-02T20:10:39.200 回答
0

使用逻辑标签,特别是逻辑:迭代。这是它如何工作的链接:

struts 逻辑:迭代

于 2012-05-02T07:20:11.103 回答
0

不,您不必创建 100 个字符串。

假设您有一个对象列表,例如

List<Country> countryList;// This list is getting populated say from database

您的 jsp 代码将具有以下内容:

<logic:iterate name="countryList" id="countryListId">
  <label><bean:write name="countryListId" property="countryName"/></label>
</logic:iterate>

根据评论:

考虑国家看起来像这样:

public class Country {

  private String countryName;

  private List<Rating> ratingList;

}

您的最小 html 可能如下所示:

<table>
    <logic:iterate name="countryList" id="countryListId">
      <tr>
          <td>
              <label><bean:write name="countryListId" property="countryName"/></label>
          </td>
          <logic:iterate id="ratingListId" name="rating" property="ratingList">
              <td>
                  <input type="text"><bean:write name="ratingListId" property="ratingName"/></input>
               </td>
          </logic:iterate>
      </tr>
    </logic:iterate>
</table
于 2012-05-02T07:25:18.297 回答