【问题标题】:How to map model object attributes with xhtml form in jsf?如何在jsf中用xhtml形式映射模型对象属性?
【发布时间】:2014-10-02 04:36:56
【问题描述】:

在 spring 中,我们可以将模型对象属性映射到 UI 表单元素。这种映射如何在 JSF 中完成? JSF 教程中讨论的主题名称是什么?我们可以在 JSP 页面中操作映射的模型对象属性。在 xhtml 页面中也可以吗?

评论中要求的 spring 示例示例。

用户域对象映射到控制器中的 jsp 表单,如以下示例代码。在这个映射在 servlet xml 中作为 command 完成之前。现在我们可以在控制器本身中做到这一点。

@RequestMapping(value = "/user", method = RequestMethod.GET)
       public ModelAndView user() {
          return new ModelAndView("user", "command", new User());
       }





@RequestMapping(value = "/createuser", method = RequestMethod.POST)
public String saveUser(@ModelAttribute("SpringWeb")User user, 
           ModelMap model) {

    model.addAttribute("name", user.getName());
    model.addAttribute("country", user.getCountry());
    model.addAttribute("id", user.getId());
    userService.saveUser(user);
    return "results";
}

由于我们已经在控制器中映射了对象,我们可以在 jsp 中按如下方式操作属性

    <form:form method="POST" action="/HibernateExample/createuser">
   <table>
    <tr>
        <td><form:label path="name">Name</form:label></td>
        <td><form:input path="name" /></td>
    </tr>
    <tr>
        <td><form:label path="country">Country</form:label></td>
        <td><form:input path="country" /></td>
    </tr>
    <tr>
        <td><form:label path="id">id</form:label></td>
        <td><form:input path="id" /></td>
    </tr>
    <tr>
        <td colspan="2">
            <input type="submit" value="Submit"/>
        </td>
    </tr>
</table>  
</form:form>

类用户

    @Entity
@Table(name="User")
public class User {

    private String id;
    private String name;
    private String country;

【问题讨论】:

  • 使用 Spring 的模型映射发布示例,我可以给出 JSF 等效项。就目前而言,你的问题太抽象了。
  • 我已经编辑了问题并添加了关于对象映射方式的示例代码。请让我知道如何在 JSF 中实现这一点。感谢您提供一个完全涵盖 JSF 的 jsf 教程链接

标签: spring jsp jsf jakarta-ee jsf-2


【解决方案1】:

JSF

    <h:form>
        <h:outputLabel for="name" value="name" />
        <h:inputText id="name" value="#{fooController.name}" />
        <!--...-->

        <h:commandButton value="Save" action="#{fooController.doSaveUser()}" />
    </h:form>

逻辑(ManagedBean)

@Named //@ManagedScoped if you don't use CDI
@RequestScoped //Or a different scope (e.g. @SessionScoped)
public class FooController {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void doSaveUser() {
        //Save user...
    }

}

我认为你应该先阅读 BalusC 的 blog 或他的任何其他内容。

【讨论】:

  • 我做到了。我花了一些时间来覆盖这些东西并找到了教程。无论如何谢谢你
猜你喜欢
  • 2011-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多