- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
但是我想使用标准 Thymeleaf 表达-6ren">
我创建了一个自定义 Thymeleaf 3 方言,如果我仅将它与如下所示的静态属性值一起使用,它就可以正常工作:
<formBuilder:inputRow title="Email:" name="email" value="<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="86f2e3f5f2c6f2e3f5f2a8e5e9eb" rel="noreferrer noopener nofollow">[email protected]</a>" />
但是我想使用标准 Thymeleaf 表达式来填充 value 属性,但如果我这样写:
<formBuilder:inputRow title="Email:" name="email" value="${user.email}" />
输出将是文本${user.email},而不是真实的电子邮件地址。
如果我像这样使用 th:value:
<formBuilder:inputRow title="Email:" name="email" th:value="${user.email}" />
那么根本不会生成任何值字段。
方言类如下。它只注册一个 elementTag 处理器:
public class FormBuilderDialect extends AbstractProcessorDialect {
private static final String DIALECT_NAME = "Form Builder Dialect";
public FormBuilderDialect() {
super(DIALECT_NAME, "formBuilder", StandardDialect.PROCESSOR_PRECEDENCE);
}
@Override
public Set<IProcessor> getProcessors(String dialectPrefix) {
final Set<IProcessor> processors = new HashSet<IProcessor>();
processors.add(new InputElementTagProcessor(dialectPrefix));
return processors;
}
}
元素处理器是:
public class InputElementTagProcessor extends AbstractElementTagProcessor {
private static final String TAG_NAME = "inputRow";
private static final int PRECEDENCE = 1000;
public InputElementTagProcessor(final String dialectPrefix) {
super(
TemplateMode.HTML, // This processor will apply only to HTML mode
dialectPrefix, // Prefix to be applied to name for matching
TAG_NAME, // Tag name: match specifically this tag
true, // Apply dialect prefix to tag name
null, // No attribute name: will match by tag name
false, // No prefix to be applied to attribute name
PRECEDENCE); // Precedence (inside dialect's own precedence)
}
@Override
protected void doProcess(ITemplateContext context, IProcessableElementTag tag, IElementTagStructureHandler structureHandler) {
final String name = tag.getAttributeValue("name");
final String value = tag.getAttributeValue("value");
final IModelFactory modelFactory = context.getModelFactory();
final IModel model = modelFactory.createModel();
// Add input
Map<String, String> inputAttributes = new HashMap<>();
inputAttributes.put("name", name);
inputAttributes.put("value", value);
model.add(modelFactory.createStandaloneElementTag("input", inputAttributes, AttributeValueQuotes.DOUBLE, false, false));
structureHandler.replaceWith(model, false);
}
}
知道如何解决这个问题吗?
最佳答案
为了解决这个问题,我必须创建一个属性标签处理器,如下所示:
public class FormBuilderAttributeTagProcessor extends AbstractAttributeTagProcessor {
private static final String ATTR_NAME = "value";
private static final int PRECEDENCE = 100;
public FormBuilderAttributeTagProcessor(final String dialectPrefix) {
super(
TemplateMode.HTML,
dialectPrefix,
"inputRow",
true,
ATTR_NAME,
false,
PRECEDENCE,
false);
}
@Override
protected void doProcess(ITemplateContext context, IProcessableElementTag tag, AttributeName attributeName, String attributeValue, IElementTagStructureHandler structureHandler) {
final IEngineConfiguration configuration = context.getConfiguration();
final IStandardExpressionParser parser = StandardExpressions.getExpressionParser(configuration);
final IStandardExpression expression = parser.parseExpression(context, attributeValue);
final String result = (String) expression.execute(context);
structureHandler.setAttribute("value", result);
}
}
并将其注册为方言类中的处理器:
public class FormBuilderDialect extends AbstractProcessorDialect {
private static final String DIALECT_NAME = "Form Builder Dialect";
public FormBuilderDialect() {
super(DIALECT_NAME, "formBuilder", StandardDialect.PROCESSOR_PRECEDENCE);
}
@Override
public Set<IProcessor> getProcessors(String dialectPrefix) {
final Set<IProcessor> processors = new HashSet<IProcessor>();
processors.add(new InputElementTagProcessor(dialectPrefix));
processors.add(new FormBuilderAttributeTagProcessor(dialectPrefix));
return processors;
}
}
关于spring - Thymeleaf 自定义方言与标准表达,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47477277/
Hibernate是独立于数据库的。因此,无论我们将在应用程序中使用什么数据库,我们都需要设置与该数据库相关的方言。 例如,假设我们正在使用MySQL数据库,那么我们需要下面的方言: org.hibe
我正在使用 Hibernate 从 sql server 2008 访问数据。同时执行以下代码 Session session = sessionFactory.openSession(); Stri
我的 PostgreSQL 版本是10.5。 hibernate.version 4.3.8.Final 的正确 Hibernate 方言是什么? 请注意,问题是关于正确的 Hibernate Dia
Hibernate 可以选择自动检测 hibernate.dialect .如何检索该自动检测到的值?我无法找到有关此的任何信息。 最佳答案 您可以从 SessionFactory 检索它但您需要将其
我对 Sequelize 还很陌生,虽然我以前在 Node 上工作过,但我没有使用任何 ORM 框架。目前我正在使用新的 SQL DB(sequelize 不支持)并希望通过对现有方言进行原型(pro
我遇到了一个奇怪的问题,目前无法解决。 今天我无法再启动我的 grails 应用程序。应用程序代码没有改变,上周运行顺利。 这是输出: | Loading Grails 2.0.3 | Configu
我是 Hibernate 新手。在阅读 Hibernate 时,我遇到了 Dialect 属性。无论我们在应用程序中使用什么数据库,我们都需要设置与该数据库相关的方言,Hibernate 将生成与该数
对于用 Python 编写 Lisp 方言/解释器,您有什么建议吗?我想从几个基本命令开始,例如 set、print 和 define 或其他命令。 最佳答案 Python 中有一个功能齐全的 Sch
是否有任何 Lisp 或 scheme 方言可以很好地支持数组和线性代数操作。我所说的良好支持并不是指 BLAS/LAPACk 的接口(interface),而是语言本身的高效数组原语。比如说,如果它
我在 PhpStorm 中总是遇到这样的问题,即我的 PDO 准备语句带有下划线,显示为“在主题类中找不到方法‘(ex.execute)’”。 是否有可能将 PDO/准备好的语句添加到 PhpStor
在我的应用程序中,我将 Hibernate 与 SQL Server 数据库一起使用,所以我设置了 在我的 persistence.xml 中。 在某些情况下,我想对包含 NULL 的记录进行排序,
我已经实现了 Hibernate's multitenant database architecture ,其中根据租户选择特定的数据库连接。我正在使用 Spring 4.3 和 Hibernate
我有以下 hibernate.cfg.xml NHibernate.Driver.OracleClientDriver User ID=user;Password=passw
在 Vim 中,需要使用\(\) 来对一些字符序列进行分组。其他特价商品也有相同的行为:\{\}。 是否可以将正则表达式样式更改为像在 perl 中一样?如何切换? 反而 \\( 我会 ( ??? 最
我正在使用 Spring 3.2.1、EclipseLink 2.4 和 JPA 2.0 当我使用非默认隔离级别时出现错误。 Exception in thread "main" org.spring
我想从 SWI-Prolog 切换到 Prova - 但似乎比预期的要难: 谓词如 succ()不可用,操作如 Var1+Var2>Var3不工作(显然它必须是 Var3
我正在尝试查询 Firebird 数据库的 SQL 方言(使用嵌入式驱动程序): procedure TFrmFireDACEmbed.BtnGetDBDialectClick(Sender: TOb
任何在 BASIC 环境下长大,后来转向另一种语言的人,都很难习惯使用“(a == b)”而不是“(a = b)”来测试相等性。 是否有一种 BASIC 方言使用“==”运算符进行比较,而不是重载“=
我的应用程序中使用了多个数据库,redshift 就是其中之一。由于使用 hibernate 框架来配置连接,我尝试使用适当的方言进行红移。但是 PostgreSQL9Dialect 和 MySQL5
您知道是否有将 Amazon SimpleDB 与 NHibernate 一起使用的方法吗? LightSpeed seems to be compatible . 最佳答案 NHibernate 更
我是一名优秀的程序员,十分优秀!