这是我的代码:ExecutorImp扩展了AbstractExecutor,它提取了与其实现者相同的执行逻辑(ExecutorImp就是一例),当调用ExecutorImp的execute()方法时,它将调用其超类型中的方法,但是超类型(AbstractExcutor) )应该知道另一个绑定到实现者的类(在示例中,它是User类):
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
abstract class AbstractExecutor<E> {
public void execute() throws Exception {
ArrayList<E> list = new ArrayList<E>();
// here I want to get the real type of 'E'
Class cl = this.getClass().getTypeParameters()[0].getGenericDeclaration().getClass();
Object o = cl.getConstructor(String.class).newInstance("Gate");
list.add((E) o);
System.out.println(format(list));
}
public abstract String format(ArrayList<E> list);
public abstract String getType();
}
public class ExectorImp<E> extends AbstractExecutor<User> {
@Override
public String getType() {
return "user";
}
@Override
public String format(ArrayList<User> list) {
StringBuffer sb = new StringBuffer();
for …Run Code Online (Sandbox Code Playgroud) 当然,.dex文件适用于Android的Dalvik VM,.class文件适用于JVM.但我想知道他们是否有类似的布局(常量池,字段,方法,属性......)?字节码是不同的,但Dalvik特定的操作码是否与JVM中的操作码等效?
我有以下XML示例:
<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"
xmlns:custom="http://example.com/opensearchextensions/1.0/">
<ShortName>Test</ShortName>
<Description>Testing....</Description>
<Url template="whatever" type="what" />
<Query custom:color="blue" role="example" />
</OpenSearchDescription>
Run Code Online (Sandbox Code Playgroud)
我关心的是Query元素.它有一个Namespace属性,在java中,你需要一个namespaceURI来检索值.
我的问题是:如何从根元素(在本例中为OpenSearchDescription元素)中检索命名空间列表?我想要我可以用来请求的属性,前缀和名称空间URI Query.
谢谢.
PS:我在java中使用DOM,在Java SE中使用标准.如果有可能的话,我愿意转向XPath.要求是只需要使用Java Standard API.
是否可以阻止hibernate自动更新持久对象?
@Transactional
public ResultTO updateRecord(RequestTO requestTO) {
Entity entity = dao.getEntityById(requestTO.getId());
// now update the entity based on the data in the requestTO
ValidationResult validationResult = runValidation(entity);
if(validationResult.hasErrors()) {
// return ResultTO with validation errors
} else {
dao.persist(entity);
}
}
Run Code Online (Sandbox Code Playgroud)
这是代码中发生的事情,我检索hibernate将被认为处于持久状态的实体,然后我更新实体中的一些字段,然后将实体传递给验证.如果验证失败,则不要udpate,如果验证成功,则持久化实体.
这是这个流程的主要问题:因为我更新了它在验证中使用的实体,无论我是否调用persist()方法(在DAO上)都没关系,因为hibernate将永远更新记录检测到实体已被更改并标记它以进行更新.
请记住,我可以改变验证的方式并解决问题,所以我对解决方法不感兴趣.我很想知道如何能够自动更新持久对象的hibernate功能.
请记住我正在使用hibernates的JPA实现.所以Hibernate处理hibernate特定API的具体答案对我来说不起作用.
我试图寻找hibernate配置,看看我是否可以设置任何配置来阻止这种行为,但没有运气.
谢谢
--EDIT ---我找不到解决方案,所以我选择回滚事务而不抛出任何RuntimeException,即使我在声明事务中使用:
TransactionInterceptor.currentTransactionStatus()使用setRollbackOnly();
这就像一个魅力.
对于EJB3中的容器管理事务(CMT),我们为事务管理提供了以下EJB注释.
@TransactionAttribute@TransactionManagement不幸的是,没有办法设置事务超时,它是特定于每个容器的.这意味着我将不得不"管理"我使用的每个特定Java EE EJB容器的事务超时.
例如,在Wildfly 9.x及更高版本中,有一个org.jboss.ejb3.annotation.TransactionTimeout我可以使用的注释.或者,我可以在JBoss EJB3部署描述符中配置它.这不适用于Wildfly以外的容器.
所以我正在测试Rest OAuth实现.我的测试工具将发送HTTP请求,但我需要准备Authorization标头.
我需要的是:我想要一个有效的授权标题
我拥有:除了oauth_signature之外的所有标题我还有2个秘密,即token_secret和consumer_secret.我也拥有access_token.所以它真的归结为,不得不签署这个请求.我怎么做?
简介:我只需要为RESTful服务填充Authorization标头的oauth_signature部分.我该怎么做?
基本上:
oAuthHeader="OAuth";
oAuthHeader=oAuthHeader+" oauth_signature_method="+oauth_signature_method;
oAuthHeader=oAuthHeader+",oauth_version="+oauth_version;
oAuthHeader=oAuthHeader+",oauth_nonce="+oauth_nonce;
oAuthHeader=oAuthHeader+",oauth_timestamp="+oauth_timestamp;
oAuthHeader=oAuthHeader+",oauth_consumer_key="+oauth_consumer_key;
oAuthHeader=oAuthHeader+",oauth_token="+oauth_token;
oAuthHeader=oAuthHeader+",oauth_signature="+**oauth_signature**;
Authorization = oAuthHeader;
Run Code Online (Sandbox Code Playgroud)
我的问题是我没有oauth_signature部分.我不知道如何得到它.请帮忙?
在JSF 2中使用带有BV的resourcebundle看起来像这样:
public class UserBean {
@Size(min=13, message="{creditcard.length}")
public String getCreditCard() {
return this.creditCard;
}
}
Run Code Online (Sandbox Code Playgroud)
我必须在其中一个属性文件中定义ResourceBundle条目,该文件可以在 faces-config.xml
creditcard.length =信用卡长度必须至少为13个字符
我们可以看到creditcard.length的值是非参数化的.
我可以进行参数化的ResourceBundle条目,可以从BV或其他地方填充吗?
这是我想要实现的简单方案:
creditcard.length =信用卡长度必须至少为{0}个字符.感谢您选择{1}信用卡.
而我希望这样的事情:
public class UserBean {
@Size(
min=13,
message="{creditcard.length}",
messageParams={"13", "plantvszombie"})
public String getCreditCard() {
return this.creditCard;
}
}
Run Code Online (Sandbox Code Playgroud)
当验证失败时,creditcard属性的错误消息将显示如下字符串:
信用卡长度必须至少为13个字符.感谢您选择plantvszombie信用卡.
这个ResourceBundle消息参数化是否可行?
请分享您对此事的经验.
谢谢 !
我想要明确一些事情:当使用arraylist时,它以10个元素的大小开始.如果需要自动增加,它会将整个arrayList重写为2/3更大.
如果我正在查看最终大小为50-120的列表,那么更好的是:
谢谢
我有一个变量是:
nocustomers = rs.getInt("CUST_TRAN_COUNT");
Run Code Online (Sandbox Code Playgroud)
如果它为null,我想执行.
我试过了
if (nocustomers ==null)
Run Code Online (Sandbox Code Playgroud)
它显示错误.
我该如何解决这个问题?
我的新修改代码是:
try{
query=" select * from SS_summary where txn_date = to_date ('"+asatdate+"','YYYY-MM-DD') ";
st = conn.createStatement();
rs = st.executeQuery(query);
if (rs.next())
{
nocustomers = rs.getInt("CUST_TRAN_COUNT");
nocheques =rs.getInt("CHEQ_DELIVERED_MAIN");
}
if (rs.wasNull()) {
out.println("NO DATA FOUND");
}
%>
Run Code Online (Sandbox Code Playgroud) 我想在使用HttpGet连接到服务器时保留会话,我需要了解它如何处理cookie.
服务器开发人员说他自己处理所有cookie.我使用HttpGet请求访问服务器如下:InputStream isResponse = null;
HttpGet httpget = new HttpGet(strUrl);
HttpResponse response = mClient.execute(httpget);
HttpEntity entity = response.getEntity();
isResponse = entity.getContent();
responseBody = convertStreamToString(isResponse);
return responseBody;
Run Code Online (Sandbox Code Playgroud)
我应该做点什么吗?他是否自动将cookie放在我的设备上,并且HttpGet方法知道使用它以便使用cookie保持sessionID?
如何检查我的设备上是否存在cookie,以便知道会话是否"活着"?
如果我使用以下代码来获取cookie:
CookieStore cookieStore = new BasicCookieStore();
// Create local HTTP context
HttpContext localContext = new BasicHttpContext();
// Bind custom cookie store to the local context
localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
HttpGet httpget = new HttpGet(strUrl);
HttpResponse response = mClient.execute(httpget,localContext);
Run Code Online (Sandbox Code Playgroud)HttpGet是否仍像以前一样处理cookie?