【发布时间】:2014-11-11 16:07:18
【问题描述】:
我正在用 Tapestry 编写一个 Web 应用程序。 在我的应用程序中,我想使用友好的网址。现在我可以像这样呈现 url 页面:
http://localhost:8080/page/page-name
我想要做的是呈现这样的 URL:
http://localhost:8080/page-name
所有页面都存储在 Postgresql 数据库中。 我目前正在使用 Tapestry 5.4-beta16,并且我已经阅读了 Tapestry 文档:
http://tapestry.apache.org/url-rewriting.html
http://blog.tapestry5.de/index.php/2010/09/06/new-url-rewriting-api/
现在,这是列出存储在数据库中的所有页面的类(仅用于测试)
public class Pages {
@Inject
private Session session;
@Property
List<it.garuti.tapestrycms.entities.Pagine> pagine;
@Property
private it.garuti.tapestrycms.entities.Pagine pagina;
void setupRender() {
pagine = session.createCriteria(it.garuti.tapestrycms.entities.Pagine.class).list();
}
}
这是显示页面内容的类:
public class Page {
@Property
private Page page;
@Inject
private Logger logger;
@Inject
private Session session;
@Inject
Request request;
@InjectPage
Index index;
@Property
private String slug;
void onActivate(String slug) {
this.slug = slug;
}
Object onActivate() {
if (session.createCriteria(Pagine.class)
.add(Restrictions.eq("slug", slug)).uniqueResult() == null)
return new HttpError(404, "Resource not found");
return null;
}
String onPassivate() {
return slug;
}
void setupRender() {
page = (Pages) session.createCriteria(Pages.class)
.add(Restrictions.eq("slug", slug)).uniqueResult();
}
}
最后是页面实体:
@Entity
@Table(name = "pages", schema = "public")
public class Pages implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "pagine_seq")
@SequenceGenerator( name= "pagine_seq", sequenceName = "pagine_id_seq")
@Column(name = "id", unique = true, nullable = false)
private long id;
@Column(name = "titolo", nullable = false, length = 60, unique = true)
private String titolo;
@Column(name = "slug", nullable = false, length = 60, unique = true)
private String slug;
@Column(name = "contenuto", nullable = false, columnDefinition = "TEXT")
private String contenuto;
@Column(name = "data_creazione", nullable = false)
private Date dataCreazione;
@Column(name = "data_modifica")
private Date dataModifica;
@Column(name = "stato", nullable = false)
private String stato;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "utente_id", nullable = false)
private Users user;
getter and setter...
....
}
坦克你 洛伦佐
【问题讨论】:
标签: url-rewriting seo tapestry friendly-url