小编Jim*_*ugh的帖子

Java JDBC - 如何使用服务名称而不是SID连接到Oracle

我有一个使用JDBC(通过JPA)的Java应用程序,它使用主机名,端口和Oracle SID连接到开发数据库,​​如下所示:

JDBC:神谕:薄:@ oracle.hostserver1.mydomain.ca:1521:XYZ

XYZ是Oracle SID.现在我需要连接到不使用SID的不同Oracle数据库,而是使用Oracle"服务名称".

我试过这个,但它不起作用:

JDBC:神谕:薄:@ oracle.hostserver2.mydomain.ca:1522:ABCD

ABCD是另一个数据库的服务名称.

我究竟做错了什么?

java oracle connection-string jdbc service-name

242
推荐指数
5
解决办法
55万
查看次数

java.util.Date和XMLGregorianCalendar之间的简单转换

我正在寻找一种在两个方向上在java.util.Date和javax.xml.datatype.XMLGregorianCalendar之间进行转换的简单方法.

这是我现在使用的代码:

import java.util.GregorianCalendar;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;

/**
 * Utility class for converting between XMLGregorianCalendar and java.util.Date
 */
public class XMLGregorianCalendarConverter {  

    /**
     * Needed to create XMLGregorianCalendar instances
     */
    private static DatatypeFactory df = null;
    static {
        try {
            df = DatatypeFactory.newInstance();
        } catch (DatatypeConfigurationException dce) {
            throw new IllegalStateException(
                "Exception while obtaining DatatypeFactory instance", dce);
        }
    }  

    /**
     * Converts a java.util.Date into an instance of XMLGregorianCalendar
     *
     * @param date Instance of java.util.Date …
Run Code Online (Sandbox Code Playgroud)

java xml datetime jaxb gregorian-calendar

110
推荐指数
4
解决办法
19万
查看次数

POI - 如何将单元格值设置为日期并应用默认Excel日期格式?

我已经使用Apache POI一段时间以编程方式读取现有的Excel 2003文件.现在我有了一个新的要求,即在内存中创建整个.xls文件(仍使用Apache POI),然后将它们写入文件末尾.阻碍我的唯一问题是处理带日期的细胞.

请考虑以下代码:

Date myDate = new Date();
HSSFCell myCell;
// code that assigns a cell from an HSSFSheet to 'myCell' would go here...
myCell.setCellValue(myDate);
Run Code Online (Sandbox Code Playgroud)

当我将包含此单元格的工作簿写入文件并使用Excel打开时,单元格显示为数字.是的,我确实认识到Excel将其"日期"存储为自1900年1月1日以来的天数,这就是单元格中的数字所代表的数字.

问题:我可以在POI中使用哪些API调用来告诉它我需要将默认日期格式应用于我的日期单元格?

理想情况下,如果用户在Excel中手动打开电子表格并键入Excel识别为日期的单元格值,我希望电子表格单元格显示的Excel默认日期格式与Excel分配的格式相同.

java date apache-poi

93
推荐指数
4
解决办法
16万
查看次数

如何使用maven配置文件设置弹簧活动配置文件

我有一个maven作为构建工具的应用程序.

我正在使用maven配置文件来设置不同配置文件的不同属性.

我想要做的是maven中的所有活动配置文件也将被移植到spring active配置文件中,所以我可以在bean signature(@profile)中引用它们.但我不知道该怎么做.

例如:考虑以下maven设置

<profiles>
    <profile>
        <id>profile1</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
        </properties>
    </profile>
    <profile>
        <id>profile2</id>
        <properties>
        </properties>
    </profile>
    <profile>
        <id>development</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
        </properties>
    </profile>
    <profile>
        <id>production</id>
        <properties>    
        </properties>
    </profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)

假设我运行maven而没有指定我希望Spring拥有的任何其他配置文件profile1以及 development作为活动配置文件.

java spring maven spring-profiles

56
推荐指数
4
解决办法
7万
查看次数

如何获取Web应用程序中所有HttpSession对象的列表?

假设我有一个运行的基于Java的Web应用程序,其中包含0个或更多HttpSession与之关联的有效对象.我想要一种方法来访问当前的有效HttpSession对象列表.我在想我可以实现一个HttpSessionListener并使用它来追加存储在应用程序范围的属性中的会话ID值列表,但随后会因会话失效而更新列表并且谁知道是什么其他.

在我开始烘焙自己的解决方案之前,我想我应该问一个问题:
servlet API是否提供了一些访问完整的非失效会话对象列表的方法?

我使用Tomcat 6.x作为我的Web应用程序容器和MyFaces 1.2.x(JSF)库.

解决方案
我遵循类似于BalusC在这些现有问题中讨论的方法:

我按SessionData类修改了实现HttpSessionBindingListener.当绑定事件发生时,对象将从所有SessionData对象的集合中添加或删除自身.

@Override
public void valueBound(HttpSessionBindingEvent event) { 
    // Get my custom application-scoped attribute
    ApplicationData applicationData = getApplicationData();
    // Get the set of all SessionData objects and add myself to it
    Set<SessionData> activeSessions = applicationData.getActiveSessions();
    if (!activeSessions.contains(this)) {
        activeSessions.add(this);
    }
}

@Override
public void valueUnbound(HttpSessionBindingEvent event) {
    HttpSession session = event.getSession();
    ApplicationData applicationData = getApplicationData();
    Set<SessionData> activeSessions …
Run Code Online (Sandbox Code Playgroud)

java servlets web-applications httpsession

49
推荐指数
2
解决办法
7万
查看次数

如何强制应用程序范围的bean在应用程序启动时实例化?

我似乎无法找到一种方法来强制在启动Web应用程序时实例化/初始化应用程序范围的托管bean.似乎应用程序范围的bean在第一次访问bean时会进行惰性实例化,而不是在启动Web应用程序时实例化.对于我的Web应用程序,当第一个用户第一次在Web应用程序中打开页面时,就会发生这种情况.

我想避免这种情况的原因是因为在我的应用程序范围的bean初始化期间发生了许多耗时的数据库操作.它必须从持久存储中检索一堆数据,然后以ListItem元素等形式缓存一些频繁显示给用户的数据.我不希望在第一个用户连接时发生这一切,因此导致长时间的延迟.

我的第一个想法是使用旧式ServletContextListener contextInitialized()方法,并从那里使用ELResolver手动请求我的托管bean的实例(从而强制初始化发生).不幸的是,我无法在此阶段使用ELResolver来触发初始化,因为ELResolver需要FacesContext并且FacesContext仅在请求的生命周期内存在.

有没有人知道另一种方法来实现这一目标?

我使用MyFaces 1.2作为JSF实现,目前无法升级到2.x.

jsf initialization startup managed-bean

37
推荐指数
2
解决办法
3万
查看次数

如何在PrimeFaces 3.0中的ap:dataTable中设置ap:列的宽度?

我正在使用PrimeFaces 3.0-M3,我有<p:dataTable>两列.我希望第一列固定在20px的宽度.另一列可以使用留下的任何空间.

以下是我目前获得的截图:

截图1

截图2

第一个<p:column>似乎忽略了style应该限制​​宽度的设置.它的尺寸太大,不适合小的彩色方块,它是其中唯一的内容,然后另一列被推得太远.

这里有更多我的Facelet代码:

<p:dataTable
        id="dataTableExpressions"
        value="#{catconBean.userDefinedExpressionDataModel}"
        var="currentRow"
        emptyMessage="!! EMPTY TABLE MESSAGE !!"
        selection="#{catconBean.userDefinedExpressionToEdit}"
        selectionMode="single">
    <p:ajax 
            event="rowSelect" 
            listener="#{catconBean.onUserDefinedExpressionRowSelect}"
            update=":toolbarForm:catconToolbar" />
    <p:ajax 
            event="rowUnselect" 
            listener="#{catconBean.onUserDefinedExpressionRowUnselect}"
            update=":toolbarForm:catconToolbar" />

    <p:column id="paletteColor" style="width:20px;">
        <h:panelGroup 
                layout="block"
                rendered="#{not empty currentRow.paletteColor}"
                style="width:16px;height:16px;border:thin;border-style:solid;border-color:black;background-color:##{currentRow.paletteColor.RGB};" />
        <h:panelGroup 
                layout="block"
                rendered="#{empty currentRow.paletteColor}"
                style="width:16px;height:16px;border:thin;border-style:dashed;border-color:red;background-color:white;text-align:center;">
            <h:outputText value="?" style="color:red;font-weight:bold;" />
        </h:panelGroup>
    </p:column>

    <p:column id="name">
        <f:facet name="header">
            <h:outputText value="#{bundle.catcon_label_CategoryName}" />
        </f:facet>
        <h:outputText 
            value="#{currentRow.name}"
            style="#{not currentRow.definitionComplete ? 'color:red;' : ''}" />
    </p:column>
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我如何修改我的Facelet代码,使第一列的固定宽度为20px?

css datatable jsf primefaces jsf-2

36
推荐指数
3
解决办法
9万
查看次数

JSF 2 - 如何使用JSF EL从web.xml获取上下文参数值?

我想在web.xml文件中声明我的JSF 2 webapp使用的一些常量值,如下所示:

<web-app>
    <context-param>
        <param-name>myconstantkey</param-name>
        <param-value>some string value</param-value>
    </context-param>
</web-app>
Run Code Online (Sandbox Code Playgroud)

从支持bean内部获取这些值非常简单:

FacesContext ctx = FacesContext.getCurrentInstance();
String myConstantValue =
    ctx.getExternalContext().getInitParameter("myconstantkey");
Run Code Online (Sandbox Code Playgroud)

如何使用JSF EL从Facelets页面内部获得相同的东西来获取值?

java jsf-2

33
推荐指数
2
解决办法
3万
查看次数

如何从托管bean中获取消息包字符串?

我希望能够从JSF 2托管bean内部的消息包中检索字符串.这可以在将字符串用作FacesMessage抛出异常中的消息中的摘要或详细信息参数的情况下完成.

我想确保托管bean为用户的语言环境加载正确的消息包.我不清楚如何使用JSF API调用从托管bean执行此操作.

我的配置是:

  • 使用Tomcat 7作为容器,因此解决方案不能依赖于仅在完整应用程序服务器容器中工作的API调用
  • 使用JSF 2参考实现(Mojarra)
  • 不使用任何允许CDI的库

注意:我确实看到了类似的问题,但这取决于我的配置中不可用的功能

编辑:我在原来的问题上犯了一个错误.我想要问的是"如何从托管bean中获取资源包字符串"?BalusC给了我正确的答案.我实际要问的解决方案非常相似:

public static String getResourceBundleString(
            String resourceBundleName,
            String resourceBundleKey)
        throws MissingResourceException {
    FacesContext facesContext = FacesContext.getCurrentInstance();
    ResourceBundle bundle = 
        facesContext.getApplication().getResourceBundle(
            facesContext, resourceBundleName);
    return bundle.getString(resourceBundleKey);
}
Run Code Online (Sandbox Code Playgroud)

此外,这里还有一个链接到另一个问题,解释了"消息"包和"资源"包之间的区别.

jsf jsf-2 managed-bean message-bundle

30
推荐指数
3
解决办法
6万
查看次数

JSF 2 - 如何向复合组件接口添加Ajax侦听器方法?

我有一个JSF 2复合组件,它采用了一些Ajax行为.我想添加一个listener方法到<f:ajax>标签我复合组件内部,但listener方法应为提供<composite:attribute><composite:interface>.

<f:ajax>我的复合组件中的标签当前是硬编码到这样的监听器:

<f:ajax
    event="valueChange"
    execute="@this"
    listener="#{controller.genericAjaxEventLogger}"
    render="#{cc.attrs.ajaxRenderTargets}" />
Run Code Online (Sandbox Code Playgroud)

bean上的listener方法有这个签名:

public void genericAjaxEventLogger(AjaxBehaviorEvent event) 
        throws AbortProcessingException {
    // implementation code...
}
Run Code Online (Sandbox Code Playgroud)

我希望复合组件是这样的,所以页面可以提供自己的事件方法,但我无法弄清楚接口的正确语法.

<f:ajax
    event="valueChange"
    execute="@this"
    listener="#{cc.attrs.ajaxEventListener}"
    render="#{cc.attrs.ajaxRenderTargets}" />
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

更新解决方案:

我采用了BalusC建议的方法,效果很好.相关的片段是:

复合组件中的接口声明

<composite:interface>
    <composite:attribute
        name="myattributeUpdatedEventListener"
        method-signature="void listener()"
        required="true" />
    ...
</composite:interface>
Run Code Online (Sandbox Code Playgroud)

我的复合组件中使用的Ajax标记

<f:ajax
    event="valueChange"
    execute="@this"
    listener="#{cc.attrs.myattributeUpdatedEventListener}"
    render="#{cc.attrs.ajaxRenderTargets}" />
Run Code Online (Sandbox Code Playgroud)

我在页面中使用复合组件的位置

<h:form>
    <compcomp:myCompositeComponent
        myattributeUpdatedEventListener="#{myBackingBean.updatedEventListenerXYZ}" />
</h:form>
Run Code Online (Sandbox Code Playgroud)

和我的支持bean上的方法

public void updatedEventListenerXYZ() {
    // do something here...
}
Run Code Online (Sandbox Code Playgroud)

java ajax listener composite-component jsf-2

20
推荐指数
1
解决办法
3万
查看次数