Bu, <h:outputScript>
'un varsayılan oluşturucusunda kodlanmıştır. Mojarra kullandığınızı varsayalım, com.sun.faces.renderkit.html_basic.ScriptRenderer
. Kaynağa göre, type
özniteliği startElement
yönteminde ayarlanmıştır.
public class ExtendedScriptRenderer extends ScriptRenderer {
@Override
protected void startElement(ResponseWriter writer, UIComponent component) throws IOException {
writer.startElement("script", component);
writer.writeAttribute("type", "application/javascript", "type");
}
}
Yoksa zaman belirtilmemiş application/javascript
için son kullanıcı type
niteliği kendisi ve varsayılan belirtmek imkanı sağlamak istiyorsanız: Sadece bunu geçersiz olabilir
public class ExtendedScriptRenderer extends ScriptRenderer {
@Override
protected void startElement(ResponseWriter writer, UIComponent component) throws IOException {
writer.startElement("script", component);
String type = (String) component.getAttributes().get("type");
if (type == null) type = "application/javascript";
writer.writeAttribute("type", type, "type");
}
}
yayınlanmaya almak için, kayıt o faces-config.xml
aşağıdaki şekilde:
<render-kit>
<renderer>
<component-family>javax.faces.Output</component-family>
<renderer-type>javax.faces.resource.Script</renderer-type>
<renderer-class>com.example.ExtendedScriptRenderer</renderer-class>
</renderer>
</render-kit>
zaten bir standart oluşturucunuz (ScriptRenderer
!) Tarafından definied oldu da yol Ancak
@FacesRenderer(componentFamily="javax.faces.Output", rendererType="javax.faces.resource.Script")
public class ExtendedScriptRenderer extends ScriptRenderer {
// ...
}
şöyle çalışmalıdır güzel @FacesRenderer
açıklama ile var, sonra bir başarısız olur özel, geçersiz kılmak için @FacesRenderer
tarafından. Ayrıca bkz. issue 1748.
Teşekkür ederiz. Her zamanki gibi, cevabınız çok titiz görünüyor. Yakında bir atış yapacağım. –