我有以下模板扩展:
package com.company;
import io.quarkus.qute.RawString;
import io.quarkus.qute.TemplateExtension;
@TemplateExtension
public class TemplateExtensions {
static RawString myMethod(Input input, String someEnumName) {
SomeEnum value = SomeEnum.valueOf(someEnumName);
//...
return new RawString("...");
}
}使用此枚举:
package com.company;
public enum SomeEnum {
LOREM,
IPSUM;
}在我的模板中,我执行以下操作:
{input.myMethod('LOREM')}这很有效,但我想知道如何以及是否可以直接使用枚举值:
package com.company;
import io.quarkus.qute.RawString;
import io.quarkus.qute.TemplateExtension;
@TemplateExtension
public class TemplateExtensions {
static RawString myMethod(Input input, SomeEnum value) {
//...
return new RawString("...");
}
}我试过了:
{input.myMethod(com.company.SomeEnum.LOREM)}但这会创建:
NOT_FOUNDHello资源:
package com.company;
import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import io.quarkus.qute.Template;
import io.quarkus.qute.TemplateInstance;
@Path("/hello")
public class ExampleResource {
@Inject
Template helloTemplate;
@GET
@Path("/index.html")
public TemplateInstance index() {
return helloTemplate.data("input", new Input());
}
}和Input Class:
package com.company;
public class Input {
String foo = "bar";
public String getFoo() {
return foo;
}
public void setFoo(String foo) {
this.foo = foo;
}
}发布于 2020-10-26 00:39:11
您可以使用Template Extensions来完成此操作
@TemplateExtension(namespace = "SomeEnum", matchName = ANY)
static SomeEnum getVal(String val) {
return SomeEnum .valueOf(val.toUpperCase());
}然后在您的模板中,您可以使用{SomeEnum:LOREM}进行访问
https://stackoverflow.com/questions/64219300
复制相似问题