我有这个界面:
@Path("inbox")
public interface InboxQueryResourceTest {
@POST
@Path("{membershipExternalId}/query")
@Consumes(MediaType.APPLICATION_XML)
@Produces("multipart/mixed")
public MultipartOutput query(@PathParam("membershipExternalId") final String membershipExternalId,
@QueryParam("page") @DefaultValue("0") final int page,
@QueryParam("pageSize") @DefaultValue("10") final int pageSize,
@QueryParam("sortProperty") final List<String> sortPropertyList,
@QueryParam("sortReversed") final List<Boolean> sortReversed,
@QueryParam("sortType") final List<String> sortTypeString,
final InstanceQuery instanceQuery) throws IOException;
}
Run Code Online (Sandbox Code Playgroud)
我已经实现了返回MultipartOutput的方法.我从Fiddler发布了一个xml查询,我收到的结果没有任何问题.
但我已经为同一个界面做了一个集成测试,我发送相同的对象,我把响应像:
final MultipartOutput multiPartOutput = getClient().query(getUserRestAuth(), 0, 25, null, null, null, instanceQuery);
Run Code Online (Sandbox Code Playgroud)
但是在这里,所以从集成测试中,我收到一个奇怪的错误:
无法找到内容类型为multipart/mixed的BorderBodyReader; boundary ="74c5b6b4-e820-452d-abea-4c56ffb514bb"并键入类org.jboss.resteasy.plugins.providers.multipart.MultipartOutput
任何人都有任何想法为什么只有在集成测试中我收到此错误?
PS:有些人会说我不发送application/xml作为ContentType而是发送multipart,这当然是假的,因为对象是用所需的@XmlRootElement等注释的,否则Fiddler的POST都不会起作用.
我有这个用户控件:
<user:RatingStars runat="server" product="<%= getProductId() %>" category="<%= getCategoryId() %>"></user:RatingStars>
Run Code Online (Sandbox Code Playgroud)
您可以通过调用两种方法来查看我填写产品和类别:
public string getProductId()
{
return productId.ToString();
}
public string getCategoryId()
{
return categoryId.ToString();
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么在用户控件中,当我接收到的数据(产品和类别)时,它给了我"<%= getProductId()%>"而不是给出从该方法收到的id ...
任何帮助将不胜感激......
编辑:解决方法:product ='<%#getProductId()%>'
最后一个问题:在用户控件中我有这个:
public string productId;
public string product
{
get
{
return productId;
}
set
{
productId = value;
}
}
Run Code Online (Sandbox Code Playgroud)
所以,我希望在用户控件中将productId设置为ok.不幸的是,当我尝试使用它时它是空的...
有什么我写的不正确吗?
在Slick 2中,我们可以映射这样的表:
case class Cooler(id: Option[Int], minTemp: Option[Double], maxTemp: Option[Double])
/**
* Define table "cooler".
*/
class Coolers(tag: Tag) extends Table[Cooler](tag, "cooler") {
def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
def minTemp = column[Double]("min_temp", O.Nullable)
def maxTemp = column[Double]("max_temp", O.Nullable)
def * = (id.?, minTemp.?, maxTemp.?) <> (Cooler.tupled, Cooler.unapply _)
}
object Coolers {
val tableQuery = TableQuery[Coolers]
}
Run Code Online (Sandbox Code Playgroud)
因为我有很多的表,我想为它们定义通用的方法,如find,delete,update所以我必须要定义一个超类这些方法从哪里致以对象(object Coolers extends TableUtils[Coolers, Cooler]).为了定义这些方法,我需要tableQuery在这个超类中移出我的对象,所以我尝试了它:
abstract class TableUtils[T <: Table[A] , A] …Run Code Online (Sandbox Code Playgroud) 我有一个MEAN项目.在EC2机器上使用Jenkins我使用以下shell脚本构建它:
npm install && PORT=8888 npm test
Run Code Online (Sandbox Code Playgroud)
mocha返回2(失败测试的数量),但jenkins仍然说:
完成:成功.
如果测试失败,我希望看到
完成:失败
你知道为什么它不能正常工作吗?
Jacob Orshalick(Seam框架的作者:体验Java EE的演变)说:
Outjection允许您从当前上下文中获取变量,以便通过EL进行注入或访问.如果您想要松散地耦合注入相同上下文变量的几个组件(如当前用户,正在预订的酒店等),这将非常有用.如果你想避免注射,另一种方法是使用@Factory方法或通过以下方式将值直接设置到上下文中:Contexts.getConversationContext().set("myVarName",myVar)
另一个好处是性能.通过向上下文中输出值,您可以绕过必须通过组件来获取该值.这特别适用于带有JSF的数据表(参见本讨论).但是,正如您将在讨论中看到的那样,您还可以使用@BypassInterceptors来实现相同的好处.
出局确实是一种便利,但通过其他方式肯定可以实现同样的好处.请注意,Web Bean中不包含outjection,并且将在Seam 3中弃用或完全删除,因此这是在可能的情况下避免使用它的进一步理由.
我们有一个很多注射的应用程序,我们已经开始摆脱它们.他说:
但通过其他手段肯定可以实现同样的好处.
但这些是其他手段吗?如何删除注射?例如,在ASP.NET中,您有会话变量.在Seam中,您可以在会话中输出var(在某些情况下是一种好处).
或者页面范围:(例如在jsf循环中,多次调用辅助bean(有时).你有一个从accountId页面参数加载的帐户.你可以加载帐户,用页面范围输出它,你可以使用它的属性很大.或者(为了避免出现)是有一个loadAccount()方法,你可以在需要时从数据库中获取帐户...最糟糕的!)
我不认为:
Contexts.getConversationContext().set("myVarName", myVar)
Run Code Online (Sandbox Code Playgroud)
是一种如何避免注射的方法.
这只会调用保存输出变量的相同上下文,并以深刻的方式修改它(我认为这正是@Out在后台执行的操作).
问题1:你认为他们的意图是什么?您是否有关于如何更换它的具体信息?
问题2:你如何避免使用注射?
提前致谢.
我有一个巨大的应用程序,在某些时候,当涉及重定向时,我收到了这个奇怪的错误:
Caused by java.lang.StringIndexOutOfBoundsException with message: "String index out of range: 0"
java.lang.String.charAt(String.java:687)
com.sun.faces.application.ViewHandlerImpl.getActionURL(ViewHandlerImpl.java:652)
org.jboss.seam.jsf.SeamViewHandler.getActionURL(SeamViewHandler.java:74)
com.sun.facelets.FaceletViewHandler.getActionURL(FaceletViewHandler.java:803)
org.ajax4jsf.application.ViewHandlerWrapper.getActionURL(ViewHandlerWrapper.java:86)
org.jboss.seam.ui.util.ViewUrlBuilder.<init>(ViewUrlBuilder.java:25)
org.jboss.seam.ui.component.UISeamCommandBase.getUrl(UISeamCommandBase.java:48)
org.jboss.seam.ui.renderkit.LinkRendererBase.doEncodeBegin(LinkRendererBase.java:26)
org.jboss.seam.ui.util.cdk.RendererBase.encodeBegin(RendererBase.java:79)
javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:813)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:934)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:942)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:942)
com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592)
org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:109)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
org.jboss.seam.web.RewriteFilter.doFilter(RewriteFilter.java:63)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:73)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.HotDeployFilter.doFilter(HotDeployFilter.java:53)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
java.lang.Thread.run(Thread.java:619)
Run Code Online (Sandbox Code Playgroud)
我花了两个小时调试等等,但没有找到任何线索...这只是奇怪,因为错误日志没有告诉清楚......(哪个字符串,涉及哪个属性等).
有没有人能从堆栈跟踪中猜出更多内容?
谢谢.
我有这个正则表达式:
private static final String SPACE_PATH_REGEX ="[a-z|A-Z|0-9|\\/|\\-|\\_|\\+]+";
Run Code Online (Sandbox Code Playgroud)
我检查我的字符串是否匹配此正则表达式,如果不是,我想用"_"替换所有不在这里的字符.
我尝试过:
private static final String SPACE_PATH_REGEX_EXCLUDE =
"[~a-z|A-Z|0-9|\\/|\\-|\\_|\\+]+";
if (myCompanyName.matches(SPACE_PATH_REGEX)) {
myNewCompanySpaceName = myCompanyName;
} else{
myNewCompanySpaceName = myCompanyName.replaceAll(
SPACE_PATH_REGEX_EXCLUDE, "_");
}
Run Code Online (Sandbox Code Playgroud)
但是它不起作用......所以在第二个正则表达式"〜"似乎没有省略以下的字符.
任何的想法?
我有一个jsf Web应用程序,在我的web.xml中我有这个配置:
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/mainLoginPage.jsp</form-login-page>
<form-error-page>/mainLoginPage.jsp?error=true</form-error-page>
</form-login-config>
</login-config>
Run Code Online (Sandbox Code Playgroud)
好吧,所有的作品都适用于网址:
http://localhost:8080/mainLoginPage.jsp
Run Code Online (Sandbox Code Playgroud)
但我想也有可能为这个mainLoginPage追加url参数,例如:
http://localhost:8080/mainLoginPage.jsp?co=google
Run Code Online (Sandbox Code Playgroud)
所以,基于公司用户,mainLoginPage将为不同的公司执行不同登录页面的redict.
如果我尝试上面的参数化url它将无法工作,因为它"认为"我请求另一个页面并且没有登录它将我重定向到默认的login.jsp.
问题:有没有办法在web.xml中指定它应该让我为这个mainLoginPage添加params而不是像我为错误页面那样在web xml中对它们进行硬编码?
谢谢.
我花了将近3个小时来处理以下案例:
我尝试了很多情况,但找不到明确的例子。
我有一个更新面板,当我按下其中的特定图像按钮时,会显示一些弹出窗口。(弹出窗口最初是隐藏的,当请求完成时,被display:none删除=>它看起来很好)
function BeginRequestHandler(sender, args) {
}
function EndRequestHandler(sender, args) {
document.getElementById('popup').style.display = '';
document.getElementById('overlay').style.display = '';
}
Run Code Online (Sandbox Code Playgroud)
好吧,问题是我需要创建一个 js 函数来执行 asyncPostBack,因为当单击该控件的某些部分时将从 Flash 控件调用该 js 函数,因此我想模拟对图像的单击。(因为单击此弹出窗口会显示如上所示)
问题是我无法在任何地方找到这样的例子。这个js函数将接收一个参数,因此当我进行回发时,我希望能够在服务器端获取该参数。(这个参数似乎是主要问题=-当我进行回发时如何将其发送到服务器?)。
抱歉,如果我不太清楚,但是您能给我一些有关此内容或示例的文档吗?
多谢!
更新: 请注意我已经完成的第一个案例,在我的 UpdatePanel 中使用 ImageButton:
<asp:ImageButton ID="lnkDetails" runat="server" ImageUrl='<%# DataBinder.Eval(Container.DataItem, "Logo") %>'
AlternateText='<%# DataBinder.Eval(Container.DataItem, "Name") %>' OnCommand="lnkDetails_Command"
CommandArgument='<%# DataBinder.Eval(Container.DataItem, "TenantID") %>' Text="Click">
</asp:ImageButton></li>
Run Code Online (Sandbox Code Playgroud)
我只需要“模拟”此点击,使用 javascript 进行异步回发(因为当我从 flash 调用时,flash 控件将调用我的 js 方法进行回发)
我试图使这个联系表格与验证引擎一起工作.
我无法理解为什么在按下"提交"按钮时不会触发验证.我已经花了一个多小时做调试等等.
你可以注意到我的表单的输入元素有class="validate[required]",我也将表单绑定到验证引擎:
<script type="text/javascript">
$(document).ready(function(){
// binds form submission and fields to the validation engine
$("#registerForm").validationEngine();
});
</script>
Run Code Online (Sandbox Code Playgroud)
你看到我做错了吗?这个jQuery插件的演示工作页面就在这里.