0

我作为金匠的工作需要一个网站,因为我有“一些”编程经验,我想我会自己做,它只是一个显示我的工作图像和基本联系信息的网站。

我想做的基本上是这样的:

我将我的珠宝图像/渲染图放在这样的文件夹结构中

- public
- - images
- - - creations
- - - - JewelSet1
- - - - - Jewel1
- - - - - - img1
- - - - - - img2
- - - - - - img3
- - - - - Jewel2
- - - - JewelSet2
- - - - - Jewel3
- - javascripts
- - stylesheets

public static Result index()第一次调用该方法时,它应该在public/images/creations中搜索并将文件夹分类为我制作的三个对象,即:CreationSet、Image和Creation,它们基本上是:

package models;

import java.awt.image.BufferedImage;
import play.db.ebean.Model;
import play.data.validation.Constraints;
import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class Image extends Model{
    @Id
    public String id;

    @Constraints.Required
    public BufferedImage img = null;

    @Constraints.Required
    public String desc;
}

@Entity
public class Creation extends Model {
    @Id
    public String id;

    @Constraints.Required
    public String name;

    @Constraints.Required
    public String desc;

    public List<Image> images = new ArrayList<Image>();

    public void addImage(int priority, Image img){
        images.add(priority, img);
    }
}

@Entity
public class CreationSet extends Model {
    @Id
    public String id;

    @Constraints.Required
    public String name;

    @Constraints.Required
    public String desc;

    public List<Creation> creations = new ArrayList<Creation>();

    public void addCreations(int priority, Creation creation){
        creations.add(priority, creation);
    }
}

然后通过CreationSets 的列表并在 html-templates 中生成正确的 HTML

这是正确的方法吗?或者我应该怎么做?

4

1 回答 1

1

顺便说一句,这可能应该在Global对象中。不在某些索引页面上。

您可以覆盖启动应用程序时将调用的 start 方法。Play 文件夹示例中的所有夹具数据都在 Global 对象中完成。

否则我会这样做的。本地资产的最大问题是您依赖于现有的文件系统、相对/绝对路径,您最终可能会在本地/生产等之间搞砸。

真正的无状态系统是设置一个外部文件系统来管理资产。以亚马逊 S3 为例。这样,如果您部署 Play 应用程序的新实例,您的静态资源仍将保持一致。

编辑 1:最后一点,如果通过生成正确的 html您的意思是生成将被编译的 Java/Scala 代码,请不要。编译时间很长,而且你会把它弄得一团糟。除了您之外,没有人能够理解您的代码。

编辑2:最后一点(承诺):作为金匠,您必须意识到工具有不同的目标,即使您有锤子,也无法解决所有问题。让我说,作为一名程序员,Play 确实是一个非常漂亮的工具,有很多优点,但它可能不是你情况下最合适的锤子

于 2012-11-12T22:14:16.930 回答