当前位置: 首页 > 面试题库 >

Java推荐的JSF 2.0 CRUD框架

邹正阳
2023-03-14
问题内容

有人可以推荐任何框架来促进JSF 2.0中的CRUD开发吗?

我最重视的方面:

  • 尽可能轻巧;对第三方库的有限依赖
  • 支持不断发展的领域模型
  • 重复编码的需求有限;支持脚手架和/或元注释

问题答案:

使用JSF 2.0提供的标准功能,CRUD确实是小菜一碟:@ViewScoped结合了一个bean 基本上已经足够了。这是一个代码示例,可以从本文中毫不客气地复制它。

Bean::

package com.example;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

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

@ManagedBean
@ViewScoped
public class Bean implements Serializable {

    private List<Item> list;
    private Item item = new Item();
    private boolean edit;

    @PostConstruct
    public void init() {
        // list = dao.list();
        // Actually, you should retrieve the list from DAO. This is just for demo.
        list = new ArrayList<Item>();
        list.add(new Item(1L, "item1"));
        list.add(new Item(2L, "item2"));
        list.add(new Item(3L, "item3"));
    }

    public void add() {
        // dao.create(item);
        // Actually, the DAO should already have set the ID from DB. This is just for demo.
        item.setId(list.isEmpty() ? 1 : list.get(list.size() - 1).getId() + 1);
        list.add(item);
        item = new Item(); // Reset placeholder.
    }

    public void edit(Item item) {
        this.item = item;
        edit = true;
    }

    public void save() {
        // dao.update(item);
        item = new Item(); // Reset placeholder.
        edit = false;
    }

    public void delete(Item item) {
        // dao.delete(item);
        list.remove(item);
    }

    public List<Item> getList() {
        return list;
    }

    public Item getItem() {
        return item;
    }

    public boolean isEdit() {
        return edit;
    }

    // Other getters/setters are actually unnecessary. Feel free to add them though.

}

Page:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html">
    <h:head>
        <title>Really simple CRUD</title>
    </h:head>
    <h:body>
        <h3>List items</h3>
        <h:form rendered="#{not empty bean.list}">
            <h:dataTable value="#{bean.list}" var="item">
                <h:column><f:facet name="header">ID</f:facet>#{item.id}</h:column>
                <h:column><f:facet name="header">Value</f:facet>#{item.value}</h:column>
                <h:column><h:commandButton value="edit" action="#{bean.edit(item)}" /></h:column>
                <h:column><h:commandButton value="delete" action="#{bean.delete(item)}" /></h:column>
            </h:dataTable>
        </h:form>
        <h:panelGroup rendered="#{empty bean.list}">
            <p>Table is empty! Please add new items.</p>
        </h:panelGroup>
        <h:panelGroup rendered="#{!bean.edit}">
            <h3>Add item</h3>
            <h:form>
                <p>Value: <h:inputText value="#{bean.item.value}" /></p>
                <p><h:commandButton value="add" action="#{bean.add}" /></p>
            </h:form>
        </h:panelGroup>
        <h:panelGroup rendered="#{bean.edit}">
            <h3>Edit item #{bean.item.id}</h3>
            <h:form>
                <p>Value: <h:inputText value="#{bean.item.value}" /></p>
                <p><h:commandButton value="save" action="#{bean.save}" /></p>
            </h:form>
        </h:panelGroup>
    </h:body>
</html>

此外,Netbeans具有一些有用的向导,可基于数据模型生成CRUD应用程序。



 类似资料:
  • Warning: This information refers to third-party sites, products, or modules that are not maintained by the Expressjs team. Listing here does not constitute an endorsement or recommendation from the Ex

  • 本文向大家介绍14款NodeJS Web框架推荐,包括了14款NodeJS Web框架推荐的使用技巧和注意事项,需要的朋友参考一下   在几年的时间里,Node.js逐渐发展成一个成熟的开发平台,吸引了许多开发者。有许多大型高流量网站都采用Node.js进行开发,像PayPal,此外,开发人员还可以使用它来开发一些快速移动Web框架。   下面就介绍14款基于Node.js的Web应用框架,大家不

  • 问题内容: 我们希望在Web应用程序中托管Java域模型(使用DDD编写)。理想情况下,我希望支持RESTful资源和请求,并拥有一个同时支持用户和REST API的站点。 理想情况下,最终用户和给定功能的RESTful API都可以使用相同的url(HTTP内容类型/协商指定区别)。 我已经在Ruby on Rails和Asp.mvc中完成了类似的应用程序,但是没有在Java中进行类似操作的经验

  • 问题内容: 我正在尝试着用Java开发一个相对快速的Web应用程序,但是我尝试过的大多数框架(Apache Wicket,Liftweb)都需要大量的设置,配置和尝试,在使整个过程与Eclipse融为一体的同时,全神贯注于Maven,我整个周末都在试图写我的第一行代码! 谁能推荐一个简单的Java Webapp框架,它不涉及Maven,难以置信的复杂目录结构或无数必须手动编辑的XML文件? 问题答

  • 本文向大家介绍如果你想写自己的Benchmark框架(推荐),包括了如果你想写自己的Benchmark框架(推荐)的使用技巧和注意事项,需要的朋友参考一下 简介 使用过JMH的同学一定会惊叹它的神奇。JMH作为一个优秀的Benchmark框架带给了我们无数的欢乐。作为一个有极客精神的程序员,那么有没有想过去自己实现一个Benchmark框架呢? 在实现Benchmark框架的时候有需要注意些什么问

  • 本文向大家介绍2014 年最热门的21款JavaScript框架推荐,包括了2014 年最热门的21款JavaScript框架推荐的使用技巧和注意事项,需要的朋友参考一下  下面,我们将会介绍 2014 年最火的 21 款JavaScript 框架,专为前端开发者准备的哦:)众所周知, JavaScript 框架是 JavaScript编程语言最棒的特性之一。   JavaScript 框架是预先