Hızda bunu yapmanın bir yolu olup olmadığından emin değilim:Velocity şablonunda statik üyelere nasıl erişilir?
Durum adlı bir özelliğin, enum gibi görünen bir kullanıcı POJO'm var (ancak bu, sıkışmış olduğumdan değil) Java 1.4) üzerinde, tanım şöyle görünür:
public class User {
// default status to User
private Status status = Status.USER;
public void setStatus(Status status) {
this.status = status;
}
public Status getStatus() {
return status;
}
Ve Durum statik iç sınıftır: Bu desen ile
public static final class Status {
private String statusString;
private Status(String statusString) {
this.statusString = statusString;
}
public final static Status USER = new Status("user");
public final static Status ADMIN = new Status("admin");
public final static Status STATUS_X = new Status("blah");
//.equals() and .hashCode() implemented as well
}
, bir kullanıcı durumu kolayca gibi bir koşullu böyle de test edilebilir
Durum kimliği için herhangi sabitleri başvurmak zorunda kalmadanif(User.Status.ADMIN.equals(user.getStatus())) ...
..., herhangi sihirli sayılar,
Ancak, ben VTL ile benim Hız şablonunda bu çıkarabilseniz nasıl test çözemiyorum vb. Sadece gibi kullanıcının durumu dayanan basit bir dize yazdırmak istiyorum:
Welcome <b>${user.name}</b>!
<br/>
<br/>
#if($user.status == com.company.blah.User.Status.USER)
You are a regular user
#elseif($user.status == com.company.blah.User.Status.ADMIN)
You are an administrator
#etc...
#end
Ama bu the VTL User Guide itibaren org.apache.velocity.exception.ParseErrorException: Encountered "User" at webpages/include/dashboard.inc[line 10, column 21] Was expecting one of: "[" ...
gibi görünen bir İstisna atar, bir Java ulaşma söz edilmez sınıf/statik üye doğrudan VTL'de, bir koşulun sağ tarafının (RHS) yalnızca bir sayı değişkeni, dize değişmezi, özellik referansı veya yöntem referansı olabileceği görülmektedir.
Bir Velocity şablonunda statik Java özelliklerine/referanslarına erişebilmemin herhangi bir yolu var mı? Bir geçici çözüm olarak, denetleyicimde durum kimliği veya başka bir tanımlayıcıyı referans olarak yerleştirebileceğimin farkındayım (bu, View teknolojisi olarak Velocity'i kullanan bir web MVC uygulamasıdır), ancak herhangi bir sihri gömmek istemiyorum. Görünüm katmanındaki sayılar veya sabitler.