如何使用Spring Boot将休息资源中的JPA数据返回到网页?

时间:2016-08-21 00:48:14

标签: spring spring-mvc spring-data-rest

我正在使用Spring Boot Guides中的this教程。如何将DB中的所有营养素返回到JSP或ThymeLeaf页面。现在,我希望将前端和后端放在项目中。

如何配置项目,以便其他响应显示在我计划添加的网页上?我需要添加一些xml配置吗?春天还有必要吗?

实体:

@Entity
@Table(name = "NUTRIENT_DEFINITION")


public class NutritionDefinition implements Serializable {


@Id
@NotNull()
@Size(max = 3)
@Column(name = "USDA_NUTRIENT_IDENTIFIER")
private String usdaNutrientIdentifier;

@NotNull
@Size(max = 7)
@Column(name = "UNITS")
private String  units;

@Size(max = 20)
@Column(name = "INFOODS_TAG")
private String infoodsTag;

@NotNull
@Size(max = 60)
@Column(name = "NUTRIENT_NAME")
private String nutrientName;

@NotNull
@Size(max = 1)
@Column(name = "NUMBER_OF_DECIMAL_PLACES")
private String numberOfDecimalPlaces;

@NotNull
@Size(max = 6)
@Column(name = "SORT_ORDER")
private String sortOrder;


protected NutritionDefinition(){


}

public NutritionDefinition(String usda_nutrient_identifier,String units, String infoods_tag,
                           String nutrient_name, String number_of_decimal_places, String sort_order){

    this.usdaNutrientIdentifier = usda_nutrient_identifier;
    this.units = units;
    this.infoodsTag = infoods_tag;
    this.nutrientName = nutrient_name;
    this.numberOfDecimalPlaces = number_of_decimal_places;
    this.sortOrder = sort_order;
}


public String getUsdaNutrientIdentifier() {
    return usdaNutrientIdentifier;
}

public void setUsdaNutrientIdentifier(String usdaNutrientIdentifier) {
    this.usdaNutrientIdentifier = usdaNutrientIdentifier;
}

public String getUnits() {
    return units;
}

public void setUnits(String units) {
    this.units = units;
}

public String getInfoodsTag() {
    return infoodsTag;
}

public void setInfoodsTag(String infoodsTag) {
    this.infoodsTag = infoodsTag;
}

public String getNutrientName() {
    return nutrientName;
}

public void setNutrientName(String nutrientName) {
    this.nutrientName = nutrientName;
}

public String getNumberOfDecimalPlaces() {
    return numberOfDecimalPlaces;
}

public void setNumberOfDecimalPlaces(String numberOfDecimalPlaces) {
    this.numberOfDecimalPlaces = numberOfDecimalPlaces;
}

public String getSortOrder() {
    return sortOrder;
}

public void setSortOrder(String sortOrder) {
    this.sortOrder = sortOrder;
}
}

休息班:

@RepositoryRestResource(collectionResourceRel = "NutritionDefinition", path = "NutritionDefinition")
public interface NutrientRepository extends PagingAndSortingRepository<NutritionDefinition,String>{

    List<NutritionDefinition> findBynutrientName(@Param("nutrientName")String name);


}

编辑:我已经看过一个代码示例,其中一个对象名为&#34; Model&#34;是作为参数传递给其他存储库但是,我无法弄清楚如何将它编织到我的示例项目中。

1 个答案:

答案 0 :(得分:0)

ReposityRestResource明确表示返回RESTful响应。如果您想要将结果显示为HTML而不是JSON,那么您希望使用像Thymeleaf这样的重放引擎。对此的一个优势是,如果您希望网页对支持服务进行AJAX调用以提取数据。

如果您要使用Thymeleaf返回HTML,那么您可以将结果添加到页面模型中,以便Thymeleaf可以渲染它。有一个入门指南:https://spring.io/guides/gs/serving-web-content/。您需要在该指南中添加的一个内容是将存储库注入控制器并调用find方法。

对于AJAX解决方案,您可以使用jQuery之类的JavaScript库来调用服务。我对那种流程并不熟悉。最好添加一个针对该问题的另一个问题。