Birkaç dizeden bir ad üreten Java Nesnesinden bir işlevi çağırabilir miyim? Örneğimde, basit bir alıcı. Sadece merak.Freemarker'da dinamik olarak oluşturulan adla çağrı işlevi
dönüş Results.html:
public class Process { private int number = 0; public int getNumber() { return this.number; } public String getPropertyName() { return "number"; } }
en böyle bir şey ile değişken süreç olarak freemarker şablonuna Süreç nesne geçti diyelim:
Süreç böyle bir Java nesnesidir() .render ("süreç", yeni Süreç());
Şimdi aşağıdaki kod parçasını içeren bir html sayfamız var. Aklımdaki yöntem bu örnekteki gibi bir şey yapmalıyım (örnek değil iş !):
:
<input name="number" type="number" value="process.getNumber()"/>
<#assign methodName = "process.get" + process.getPropertyName()?cap_first + "()">
<input name="${process.getPropertyName()}" type="number" value="${methodName}"/>
html yorumlanır sonuç şudur
Ancak bu sadece bir dizedir ve freemarker şablonunda yöntemin içinde saklanan bir değer olarak yorumlanmaz.
Ne düşünüyorsun, Bu elde etmek için bir yolu var mı?
<input name="${process.propertyName}" type="number" value="${process[process.propertyName]}"/>
Ama gerçekten yöntemini aramak istiyorsanız, o zaman eval
ile deneyebilirsiniz: Yalnızca dinamik bir alan erişmek isterseniz
Teşekkürler, bu kadar! Belki de çözümü kendim bulmak için çok geç oldu;) – Krt