我做了这个简单的RESP应用程序,用于将博客条目输入到html页面,这里是一个示例代码..任何想法为什么?当我谷歌搜索它看起来应该没问题。我告诉你我做了什么..每个条目都有它的id,它保存在arraylist中并且只有一个简单的属性文本..我想稍后添加一些特殊命令,所以我也可以在命令行中添加一个事件。我想添加一个函数,我可以将其标记为已读/未读,默认情况下未读...任何想法如何做?
由于
@Path("/")
public class RootResource {
private final EntryListResource entries = new EntryListResource();
@GET
@Path("favicon.ico")
public Response getFavicon() {
return Response.noContent().build();
}
@GET
public Response get(@Context UriInfo uriInfo) {
final URI location = uriInfo.getAbsolutePathBuilder().path("/entries").build();
return Response.seeOther(location).build();
}
@Path("entries")
public EntryListResource getEntries() {
return entries;
}
}
和
@XmlRootElement(name = "entryRef")
public class EntryResourceRef {
private int id;
private URI href;
@XmlAttribute
public URI getHref() {
return href;
}
@XmlAttribute
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public void setHref(URI href) {
this.href = href;
}
}
最后
@XmlRootElement(name = "entry")
@XmlAccessorType(XmlAccessType.NONE)
public class EntryResource {
private int id;
private String text;
@GET
@Produces(MediaType.APPLICATION_XML)
public Response get() {
return Response.ok(this).build();
}
@GET
@Produces(MediaType.TEXT_HTML)
public Response getHTML(@Context UriInfo uriInfo) {
final StringBuilder sb = new StringBuilder();
@PUT
@Consumes(MediaType.TEXT_PLAIN)
public Response updatePlain(String text,String description, @Context UriInfo uriInfo) {
return update(text, description, uriInfo.getAbsolutePath());
}
@PUT
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response updateAsForm(@FormParam("text") String text, @FormParam("description") String description,@Context UriInfo uriInfo) {
return update(description,text, uriInfo.getAbsolutePath());
}
private Response update(String text,String description, URI self) {
if (getText().equals(text)) {
throw new WebApplicationException(
Response
.status(Response.Status.CONFLICT)
.entity("The blog entry text has not been modified")
.type(MediaType.TEXT_PLAIN)
.build()
);
}
setText(text);
return Response.seeOther(self).build();
}
来源
@XmlRootElement(name = "entries")
@XmlAccessorType(XmlAccessType.NONE)
public class EntryListResource {
private final AtomicInteger nextEntryId = new AtomicInteger(0);
private UriInfo uriInfo = null;
@GET
@Produces(MediaType.APPLICATION_XML)
public Response get() {
return Response.ok(this).cacheControl(CC).build();
}
@XmlElement(name = "blog")
public Collection<EntryResourceRef> getEntries() {
final Collection<EntryResourceRef> refs = new ArrayList<EntryResourceRef>();
for (final EntryResource entry : entries.values()) {
final EntryResourceRef ref = new EntryResourceRef();
ref.setId(entry.getId());
ref.setHref(getEntryUri(entry));
refs.add(ref);
}
return refs;
}
答案 0 :(得分:0)
您可以使用0和1来帮助您对结果进行排序。
在获取记录时,您可以在查询本身中附加“读取”或“未读”。示例如下:
Select news.*,
(case news.STATUS
when 0 then 'Unread'
when 1 then 'Read'
end) as Status
from News news
这是一个原生SQL,或者你也可以在HQL中完成。
其他解决方案是您可以在新闻实体中使用枚举。这样你就可以在UI中显示字符串,在DB中它将保存序数值,即0或1.示例代码如下所示。
@Table(name = "NEW")
public class New
{
private NewsStatus newsStatus;
}
public static enum NewsStatus {
READ{
public String toString(){
return "Read";
}
},
UNREAD{
public String toString(){
return "Unread";
}
}
public int getValue(){
return this.ordinal() + 1;
}
public String getLabel(){
return this.toString();
}
public static NewsStatus getByLabel(String label)
{
if(label == null)
return null;
for(NewsStatus ns : NewsStatus.values()) {
if(label.equalsIgnoreCase(ns.getLabel()))
return ns;
}
return null;
}
public static NewsStatus getByValue(int value){
return NewsStatus.values()[value-1];
}
}
如果需要进一步的详细信息,请告诉我吗?
Krish