我已经创建了一个AEMServlet。现在我已经用servlet本身创建了OSGi配置(如下所示的数组类型的MULTI_字段),因为它也被定义为服务。现在,我的需求是如何在doGet方法中访问这个osgi配置。下面是servlet的代码。
@Component(label = "Sample Servlet", description = "Sample Servlet", immediate = true, metatype = true)
@Service
@Properties(value = {
@Property(name = "sling.servlet.resourceTypes", value = {
GlobalConstants.RES_TYPE,
GlobalConstants.PAGE_RES_TYPE }, propertyPrivate =
true),
@Property(name = "sling.servlet.selectors", value = {
GlobalConstants.PAGES,
GlobalConstants.ASSETS }, propertyPrivate = true),
@Property(name = "sling.servlet.extensions", value = "xml",
propertyPrivate = true),
@Property(name = "sling.servlet.methods", value = { "GET" }) })
public class SampleServlet extends SlingAllMethodsServlet {
@Property(value={"English", "Hindi"}, unbounded =
PropertyUnbounded.ARRAY, label = "Subjects", cardinality = 50,
description = "Example for Multi field config")
private static final String MULTI_FIELD = "multifield";
@Override
protected void doGet(final SlingHttpServletRequest request, final
SlingHttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
}
我同意Emin的观点,这应该在激活方法内部处理。但是在6.2上,Overwrited方法只有一个参数,我将使用PropertiesUtil而不是强制转换。
该方法看起来像:
@Activate
public void activate(final ComponentContext componentContext) {
final Dictionary<?, ?> props = componentContext.getProperties();
this.multiField = Arrays.asList(PropertiesUtil.toStringArray(props.get(MULTI_FIELD), new String[0]));
}
您需要将属性值设置为激活方法中的成员字段:
@Activate
protected void activate(final BundleContext bundleContext,
final Map<String, Object> componentConfig) {
this.multiField = (String[]) componentConfig.get(MULTI_FIELD);
}
我自己没有尝试过这个代码,但它可以提供一些想法。您可以在此处检查主Servlet以了解其工作原理:http://svn.apache.org/repos/asf/sling/tags/org.apache.sling.engine-2.2.6/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java
我有一个服务(位于核心/服务内部)和服务实现(位于核心/服务/impl)。 我有一个扩展com的现有类(位于core/impl/view/components内部)。土砖cq。很明显。WCMUsePojo。使用getSlingScripterHelper,这个类可以访问我上面提到的服务。 我正在尝试在不使用WCMUsePojo的情况下访问该服务。我怎么做? 谢谢!
问题内容: 我有以下Java代码- 我得到的错误是 如何正确访问注释字段? 问题答案: 默认情况下,注释在运行时不可用。您需要添加到注释定义以使其可用于运行时处理。例如: 在实践中,还应在实际尝试从字段中删除注释之前,检查该字段是否确实具有给定的注释。 另外,指定注释所属的元素类型也是一种好习惯。因此,您的示例将是:
问题内容: 假设您在NxN网格中有一个JButton的GridLayout,其代码如下: 如何通过setText()单独访问网格中的每个按钮以更改按钮的名称?这需要在实际按下相关按钮之外进行。 因为每个按钮在本地实例化为“ b”,所以当前无法获得每个按钮的全局可访问名称。如何独立访问每个按钮?像JButton [] []这样的数组可以容纳对所有按钮的引用吗?如何在上面的代码中进行设置? 任何输入表
我的windows批处理文件: test.py: 测试导入。py: 这不起作用。我得到一个错误消息,说'问候'没有定义。我想给你看输出,但我也有麻烦。 使用INT test_导入需要更改什么。py,那么变量在主模块中是可访问的?
为了从web应用程序获取DB连接,我在web应用程序中编写了以下代码: 早些时候,我使用Tomcat作为服务器,当我在文件中配置资源详细信息时,我能够获得DB连接,但当我使用开始使用weblogic server时,我得到以下错误: 我已经尝试了这个链接中提到的选项:如何在WebLogic上查找JNDI资源?但我仍然面临着问题。 请让我知道我在哪里做错误,访问JNDI对象的过程是什么。
问题内容: 我正在尝试检索JSP页面中servlet设置的属性值,但是我对参数by的运气还不错。我不确定该怎么做。也许它很简单,但是我还无法处理。 在JSP中,我一直试图检索“ attribValue”,但是没有成功: 如果我在所有过程(调用页面,servlet和目标页面)中都传递了一个参数,则它的效果很好。 问题答案: 它已经在默认的EL范围内可用,因此 应该做。 如果您想明确指定范围(EL将依