如何在我自己的元素模型处理器中正确处理 HTML 标记及其正文?例如,我有以下 HTML 结构:
<my:form id="some_id">
<my:input type="text" name="input-1"/>
<my:input type="number" name="input-2"/>
</my:form>
我想my:form通过添加一些生成的属性来更改包装标签,以便输出看起来像这样<form id="some_id" other-attr="_generated_value_">...</form>,并通过向每个输入添加一个带有表单 id 的属性来处理每个内部my:input(并且通常处理这些标签应该是) ,例如<input type="text" name="input-1" id="generated_1" form-id="some_id">。通常my:input由我的AbstractAttributeTagProcessor分机处理。
到目前为止,我已经AbstractElementModelProcessor像这样扩展了创建处理器:
public class MyFormProcessor extends AbstractElementModelProcessor {
private static final String ELEMENT_NAME = "form";
private static final int PRECEDENCE = 1000;
public MyFormProcessor( final String dialectPrefix ) {
super(
TemplateMode.HTML,
dialectPrefix, // dialect prefix - 'my' in this case
ELEMENT_NAME,
true, // filter by element name prefix
null,
false,
PRECEDENCE
);
}
@Override
protected void doProcess( ITemplateContext context,
IModel model,
IElementModelStructureHandler structureHandler ) {
// what goes here?
}
}
处理器已正确注册,并将表单及其主体转换为一系列事件,但我尚未弄清楚如何model正确修改,因为我在其元素上找不到任何修改方法。
提前感谢您的任何指导!